저는 appwidget에 앱 실행기가 있습니다. 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에서 내 코드입니다 : 여기
는 RemoteViewsFactory에서 내 코드입니다
@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);
}
}
가 작동하지 않는 이유, 사람 생각이있으세요은?
정확히 무슨 당신이하려고 :
PendingIntent.getBroadcast(...)
가 방송을 만들고,이 같은PendingIntent.getActivity(...)
을 사용할 필요가? 이 예외는 'INTERACT_ACROSS_USERS_FULL' 권한이 필요하지만 앱에이 권한이없는 작업을 수행하고 있음을 의미합니다. 사실 ** 당신은 **이 허락을받을 수 없습니다. 이는 서명 수준 권한이며 Google Apps 또는 OEM Apps 만 서명 수준 권한을 가질 수 있습니다. 그래서 당신은 정상적인 개발자들에게 한계가없는 것을하려고 노력하고 있습니다. 어쨌든 이것은 완전히 다른 문제입니다. 이 문제에 대해 새로운 질문을하면 훨씬 나아질 것입니다. –원래 문제를 'PendingIntents'로 해결하고 새로운 문제에 대해 새로운 질문을하는 경우 여기에서 내 대답을 수락하십시오. 기본적으로이 질문의 아래쪽 부분을 새 것으로 복사 할 수 있습니다. 새로운 문제에 대해 기꺼이 도와 드리겠습니다. 의견에 새 질문에 대한 링크를 게시하면됩니다. –
나는이 권한으로 무엇이든하고 싶지 않습니다. 나는 appwidget에서 활동 만 시작하기를 원합니다. 내 앱은 설치된 패키지가있는 목록을 표시하고 사용자가 설치된 앱 중 하나를 클릭하면 선택한 앱이 앱을 엽니 다. – Sporty9915