【发布时间】:2014-07-23 14:00:07
【问题描述】:
我在应用小部件中有一个应用启动器。我会从 RemoteViewsFactory 启动 Activity。 但它没有用。
这是我在 RemoteViewsFactory 中的代码:
@Override
public RemoteViews getViewAt(int position) {
RemoteViews rv = new RemoteViews(mContext.getPackageName(), R.layout.app_item);
ResolveInfo info = mApps.get(position);
Bundle extras = new Bundle();
extras.putString(TheWidgetProvider.APP_ID, info.getClass().getName());
Intent fillInIntent = new Intent();
fillInIntent.putExtras(extras);
rv.setOnClickFillInIntent(R.id.app_name, fillInIntent);
return rv;
}
这是我来自 TheWidgetProvider 的代码:
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
Intent AppsServiceIntent = new Intent(context, AppsService.class);
AppsServiceIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]);
AppsServiceIntent.setData(Uri.parse(AppsServiceIntent.toUri(Intent.URI_INTENT_SCHEME)));
views.setRemoteAdapter(R.id.GridViewApps, AppsServiceIntent);
Intent appsIntent = new Intent(context, TheWidgetProvider.class);
appsIntent.setAction(TheWidgetProvider.EVENT_SHOW_APP);
appsIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]);
appsIntent.setData(Uri.parse(updateServiceIntent.toUri(Intent.URI_INTENT_SCHEME)));
PendingIntent appsPendingIntent = PendingIntent.getBroadcast(context, 0, appsIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
views.setPendingIntentTemplate(R.id.GridViewApps, appsPendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}
有没有人知道为什么它不起作用?
【问题讨论】:
-
你到底想做什么?此异常意味着您正在做的事情需要
INTERACT_ACROSS_USERS_FULL权限,但您的应用程序没有此权限。事实上,您不能拥有此权限。这是一个签名级别的权限,只有 Google 或 OEM 应用程序才能拥有签名级别的权限。因此,您正在尝试做一些普通开发人员不受限制的事情。无论如何,这是一个完全不同的问题。如果您就这个问题提出一个新问题会更好。 -
如果它解决了
PendingIntents的原始问题,请在此处接受我的回答,并就新问题提出新问题。您基本上可以将这个问题的下半部分复制到新问题中。我也很乐意帮助您解决新问题,所以只需在 cmets 中发布新问题的链接,我会看一看。 -
我不想用这些权限做任何事情。我只想从 appwidget 开始一个活动。我的应用程序显示一个包含已安装包的列表,如果用户单击已安装的应用程序之一,所选应用程序将打开它。
-
嗯,你正在做一些你不应该做的事情。只需提出一个新问题,我相信我们会找到解决方案。 Stack Overflow 上的问题应该只针对一个问题。这个是关于
PendingIntents的问题,对于这个新问题,如果您提出一个新问题是合适的。
标签: java android android-appwidget appwidgetprovider android-remoteview