这是我的RemoteViewsService中的getViewAt。我需要在此处单击行的位置并使用它来发送包含在字符串数组中的特定URL。这样做的原因是,当点击appwidget上的列表视图时,我可以启动该URL(简单的书签小部件)。
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);
现在它只是从字符串teststr启动虚拟URL。
任何帮助都会非常感激,我可能采取了错误的方法,或者只是没有正确接受意图我不确定,但我不确定下一步该去哪里。我不知道捆绑的意图最终会在哪里,但onclick正在使用虚拟URL。
提前致谢。
编辑1:
这是我到目前为止所做的。
//在我的AppWidgetProvider接收器和默认的Intent类别中添加了对我的androidmanifest“com.halls.jon.LaunchURL”的操作。只是想学习如何做到这一点。
<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);
//这是我在AppWidgetProvider中为onReceive编写的代码。
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 :(得分:0)
您可以让点击待处理的Intent转到您的清单中的BroadcastReceiver
(甚至可能是您的AppWidgetProvider
)并使用自定义操作。当您收到此操作时,请检查其他内容并构建实际网址,然后拨打context.startActivity()
。