0

Это мой 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); 

Мое приложение разбивается, как только я пытаюсь сбросить виджет. Не знаю, почему. Любая дополнительная помощь будет оценена по достоинству.

ответ

0

У вас может быть ожидающий намек на намерение перейти к BroadcastReceiver в ваш манифест (это может быть даже ваш AppWidgetProvider) с помощью специального действия. Когда вы получите это действие, проверьте дополнительные параметры и создайте фактический URL-адрес, а затем позвоните по телефону context.startActivity().

+0

Я очень ценю ответ, любой шанс, я могу получить пример кода, как это работает, я довольно новый. Если не беспокоиться, я все равно ценю это, и я рассмотрю, как реализовать ваше предложение. Однажды я попробовал радиовещательный приемник, но я, должно быть, сделал это неправильно. Еще раз спасибо. –

+0

Я подтвердил ваш ответ, но он не отображается, потому что я новичок и еще нет 15 репутов. Еще раз спасибо, я рад, что у меня есть какое-то направление. –

+0

Когда я пытаюсь установить приложение AppWidgetProvider в качестве получателя в своем манифесте, я получаю сообщение об ошибке, когда у него нет конструктора по умолчанию. NEVERMIND Я идиот, у меня это получилось. –