1

저는 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); 
    } 
} 

가 작동하지 않는 이유, 사람 생각이있으세요은?

+0

정확히 무슨 당신이하려고 :

PendingIntent appsPendingIntent = PendingIntent.getBroadcast(context, 0, appsIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

PendingIntent.getBroadcast(...)가 방송을 만들고,이 같은 PendingIntent.getActivity(...)을 사용할 필요가? 이 예외는 'INTERACT_ACROSS_USERS_FULL' 권한이 필요하지만 앱에이 권한이없는 작업을 수행하고 있음을 의미합니다. 사실 ** 당신은 **이 허락을받을 수 없습니다. 이는 서명 수준 권한이며 Google Apps 또는 OEM Apps 만 서명 수준 권한을 가질 수 있습니다. 그래서 당신은 정상적인 개발자들에게 한계가없는 것을하려고 노력하고 있습니다. 어쨌든 이것은 완전히 다른 문제입니다. 이 문제에 대해 새로운 질문을하면 훨씬 나아질 것입니다. –

+0

원래 문제를 'PendingIntents'로 해결하고 새로운 문제에 대해 새로운 질문을하는 경우 여기에서 내 대답을 수락하십시오. 기본적으로이 질문의 아래쪽 부분을 새 것으로 복사 할 수 있습니다. 새로운 문제에 대해 기꺼이 도와 드리겠습니다. 의견에 새 질문에 대한 링크를 게시하면됩니다. –

+0

나는이 권한으로 무엇이든하고 싶지 않습니다. 나는 appwidget에서 활동 만 시작하기를 원합니다. 내 앱은 설치된 패키지가있는 목록을 표시하고 사용자가 설치된 앱 중 하나를 클릭하면 선택한 앱이 앱을 엽니 다. – Sporty9915

답변

2

오류가 여기에 있습니다 :

PendingIntent appsPendingIntent = PendingIntent.getActivity(context, 0, appsIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
+0

감사합니다. Xaver, – Sporty9915

+0

감사합니다. Xaver, 내 코드가 수정되었지만 작동하지 않습니다. My WidgetProvider : ' 의도 앱 입력 = 새 의도 (context, AppsService.class); 문자열 packageName = appsIntent.getStringExtra (APP_ID); appsIntent.putExtra (AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds [i]); PendingIntent appsPendingIntent = PendingIntent.getActivity (context, 0, appsIntent, PendingIntent.FLAG_UPDATE_CURRENT); views.setPendingIntentTemplate(R.id.GridViewApps, appsPendingIntent); ' 'code in backticks', – Sporty9915

+0

질문에 해당 코드를 편집 해 주실 수 있습니까? –