Это мой getViewAt из моего RemoteViewsService. Мне нужно получить позицию строки, нажатой здесь, и использовать ее для отправки определенного URL-адреса, который содержится в массиве строк. Причина этого заключается в том, что я могу запустить этот URL-адрес при щелчке по списку на appwidget (простой виджет закладки).Как получить этот комплект намерений из приложения appwidgetprovider? Пример внутри
public RemoteViews getViewAt(int position){
RemoteViews row = new RemoteViews(ctxt.getPackageName(),R.layout.widget_list_item);
row.setTextViewText(R.id.widgetlisttextview,NicknamesW.get(position));
Intent i = new Intent();
Bundle extras = new Bundle();
extras.putString("getrow",URLSW.get(position));
i.putExtras(extras);
row.setOnClickFillInIntent(R.id.widgetlisttextview,i);
не уверен, что я что-то здесь не вижу или нет, но это то, что у меня есть до сих пор.
Тогда вот мой appwidgetprovider, где я пытаюсь закончить onclickIntent и запустить URL.
public void onUpdate(Context ctxt, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
for (int i = 0; i < appWidgetIds.length; i++){
String teststr = "http://www.dummy.ca";
Intent svcIntent = new Intent(ctxt,ListViewService.class);
svcIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,appWidgetIds[i]);
//
svcIntent.setData(Uri.parse(svcIntent.toUri(Intent.URI_INTENT_SCHEME)));
//
RemoteViews widget = new RemoteViews(ctxt.getPackageName(),R.layout.widget);
widget.setRemoteAdapter(R.id.WidgetListView,svcIntent);
// set url
Intent openurl = new Intent(Intent.ACTION_VIEW, Uri.parse(teststr));
PendingIntent clickPI = PendingIntent.getActivity(ctxt,0,openurl,PendingIntent.FLAG_UPDATE_CURRENT);
widget.setPendingIntentTemplate(R.id.WidgetListView,clickPI);
appWidgetManager.updateAppWidget(appWidgetIds[i],widget);
Сейчас он просто запускает фиктивный URL-адрес из строки teststr.
Любая помощь была бы чрезвычайно оценена, я могу принять неправильный подход или просто не получить намерение правильно, я не уверен, но я не уверен, куда идти дальше. Я не знаю, куда заканчивается связанное намерение, но onclick работает с фиктивным URL-адресом.
Заранее спасибо.
EDIT 1:
Это то, что я сделал до сих пор.
// Добавлен действие для моего androidmanifest "com.halls.jon.LaunchURL" в моем приемнике AppWidgetProvider и категории по умолчанию. Просто пытаюсь научиться этому.
<receiver android:name=".LinksWidget">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE"/>
<action android:name="com.halls.jon.LaunchURL"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data android:name="android.appwidget.provider"
android:resource="@xml/my_widget_provider"/>
</receiver>
// Тогда я подошел к моей AppWidgetProvider и изменил некоторые намерения и в ожидании намерения. Вот код:
Intent launch = new Intent("com.halls.jon.LaunchURL");
PendingIntent clickPI = PendingIntent.getBroadcast(ctxt,0,launch,PendingIntent.FLAG_UPDATE_CURRENT);
widget.setPendingIntentTemplate(R.id.WidgetListView,clickPI);
// И это код, я написал для моего OnReceive в моем AppWidgetProvider.
Bundle getdata = intent.getExtras();
if (getdata != null) {
String URLLaunch = getdata.getString("url");
Intent launch = new Intent(Intent.ACTION_VIEW, Uri.parse(URLLaunch));
context.startActivity(launch);
}
super.onReceive(context, intent);
Мое приложение разбивается, как только я пытаюсь сбросить виджет. Не знаю, почему. Любая дополнительная помощь будет оценена по достоинству.
Я очень ценю ответ, любой шанс, я могу получить пример кода, как это работает, я довольно новый. Если не беспокоиться, я все равно ценю это, и я рассмотрю, как реализовать ваше предложение. Однажды я попробовал радиовещательный приемник, но я, должно быть, сделал это неправильно. Еще раз спасибо. –
Я подтвердил ваш ответ, но он не отображается, потому что я новичок и еще нет 15 репутов. Еще раз спасибо, я рад, что у меня есть какое-то направление. –
Когда я пытаюсь установить приложение AppWidgetProvider в качестве получателя в своем манифесте, я получаю сообщение об ошибке, когда у него нет конструктора по умолчанию. NEVERMIND Я идиот, у меня это получилось. –