У меня есть основной виджет, который отображает текстовое поле. Я пытаюсь понять, как запустить URL-адрес веб-сайта, когда пользователь нажимает на сам виджет. Кажется, я не могу найти код по этому вопросу.Как запустить веб-сайт по щелчку виджета?
ответ
В основном есть 2 варианта:
- Link, так - создать linkified TextView, поэтому, нажав на ссылку тех, вы будете там (в сети)
- Через onClickListener - описанные в предыдущем ответе.
Я предпочитаю 1-й подход:
TextView tv=(TextView) findViewById(R.id.myTextView);
tv.setText(Html.fromHtml("<a href='stackoverflow.com'>Go StackOverFlow!</a>"));
набор, TextView быть интерактивными с TextView.setOnClickListener(this)
, а затем пусть ваша деятельность реализует интерфейс OnClickListener
и определить метод public void onClick(View v)
.
Внутри метода onClick(View v)
, сделайте следующее:
public void onClick(View v){
startActivity(new Intent(Intent.ACTION_VIEW, url));
}
Это откроет url
в браузере устройства.
У вас также может быть другое действие, которое использует WebView для отображения веб-сайта.
Надеюсь, это было полезно.
Я предполагаю, что вы сказали «виджет», что предыдущие ответы не работают на вас. Я нахожусь в одной лодке - вам, вероятно, нужно будет установить ожидающее намерения с помощью API RemoteViews, как это делается здесь (http://stackoverflow.com/questions/2082998/how-to-implement-a-button- on-an-android-widget), за исключением того, что вы передадите идентификатор textview вместо идентификатора кнопки ... Я думаю.
Вам не понадобятся фэнтезийные действия действия ... просто замените намерение, которое они используют в вызове PendingIntent, с тем, который был получен от ответа @ CommonsWare на этот вопрос.
Мы не можем использовать onClickListener
непосредственно с виджетами. Вместо этого мы должны обернуть наш Intent
PendingIntent
и setOnClickPendingIntent
для просмотра.
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
super.onUpdate(context, appWidgetManager, appWidgetIds);
// There maybe > 1 instance of our widget
for (int i : appWidgetIds) {
startBrowsing(context, appWidgetManager, i);
}
}
// Processing click on widget
private void startBrowsing(Context ctx,
AppWidgetManager appWidgetManager, int widgetID) {
RemoteViews widgetView = new RemoteViews(ctx.getPackageName(), R.layout.widget);
Uri uri = Uri.parse("http://www.google.com");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
PendingIntent pIntent = PendingIntent.getActivity(ctx, widgetID, intent, 0);
// viewID - our clickable view ID
widgetView.setOnClickPendingIntent(R.id.viewID, pIntent);
appWidgetManager.updateAppWidget(widgetID, widgetView);
}
Установить период обновления до 0 в metadata.xml, потому что мы обновляем его вручную
android:updatePeriodMillis="0"
И не забудьте
<uses-permission android:name="android.permission.INTERNET"/>
Во-первых, установить идентификатор действия.
private final String WIDGET_CLICK = "WidgetClick";
Затем при инициализации виджета, зарегистрировать PendingIntent для корневого зрения виджета. Замените «YourAppWidgetProvider» на ваш класс виджетов, который переопределяет AppWidgetProvider.
Intent intent = new Intent(context, YourAppWidgetProvider.class);
intent.setAction(WIDGET_CLICK);
views.setOnClickPendingIntent(R.id.widget_layout, PendingIntent.getBroadcast(context, 0, intent, 0));
Наконец, переопределить OnReceive и использовать контекст, предоставленную ему для запуска вашего веб-сайта. Замените «urlString» адресом вашего сайта и не забудьте указать http: // в адресе.
@Override
public void onReceive(Context context, Intent intent) {
super.onReceive(context, intent);
if (intent.getAction() != null && intent.getAction().equals(WIDGET_CLICK)) {
try {
Intent webIntent = new Intent(Intent.ACTION_VIEW).setData(Uri.parse(urlString));
webIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(webIntent);
} catch (RuntimeException e) {
// The url is invalid, maybe missing http://
e.printStackTrace();
}
}
}
Это правильный ответ! –
- 1. Показывать только тост по щелчку виджета
- 2. Как развернуть div по щелчку
- 3. содержания изменения Jquery по щелчку
- 4. Вкладка primefaces по щелчку
- 5. Как запустить конфигурационную активность из виджета?
- 6. Как удалить элемент по щелчку
- 7. Как выделить div по щелчку
- 8. как изменить классы по щелчку
- 9. Как раздвинуть div по щелчку
- 10. Возможно ли запустить внутреннее приложение xx.exe по щелчку ссылки
- 11. просмотра списка по щелчку
- 12. Показывать по щелчку
- 13. Переключить .dimBackground() по щелчку
- 14. Javascript Отправить по щелчку
- 15. Target по щелчку
- 16. Обновить iScroll по щелчку
- 17. По щелчку, удалить DIV
- 18. Отключить MouseMove по щелчку
- 19. Закройте меню по щелчку
- 20. Изменить класс по щелчку
- 21. Очистить содержимое по щелчку
- 22. по щелчку Статистика
- 23. Прокрутка вниз по щелчку
- 24. Закрыть модальный по щелчку
- 25. JAVASCRIPT меняется по щелчку
- 26. Выполнить функцию по щелчку
- 27. Добавить содержимое по щелчку
- 28. Div исчезает по щелчку
- 29. Пространство имён в asp.net вебсайт
- 30. Определите, завершен ли вебсайт send()
Виджеты для Android построены вокруг AppWidgetProvider, а не Activity. AppWidgetProvider не имеет такого метода, как startActivity (намерение намерения). – Finnboy11
Что я предложил здесь, чтобы позволить Widget быть кликабельным, а затем использовать 'startActivity()', где он обрабатывает щелчок, чтобы запустить намерение открыть URL-адрес. –
. Пожалуйста, взгляните на ответ, который я добавил. Он отличается от того, который у вас есть. Ваш ответ был бы блестящим, если бы это была нормальная активность, но виджеты ведут себя по-другому по сравнению с этим. Извините, но я должен держать этот голос на этом, но не позволяйте этому разрушить ваш день. – Finnboy11