1

私の AppsSerive では、インストールされたパッケージを次のようにロードします。

mApps = mContext.getPackageManager().queryIntentActivities(mainIntent, 0);

次に、アプリケーションのアイコンとラベルを表示します。アイコンまたはラベルをクリックした後にアクティビティを開始したい。

onUpdate の WidgetProvider に pendingIntentTemplate を設定しました。

 Intent appsIntent = new Intent(context, AppsService.class);
   String 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); 

AppsService では、setOnClickFillInIntent を宣言しました。

 Intent fillInIntent = new Intent();
    fillInIntent.setPackage(packageName);
    Bundle extras = new Bundle();
    fillInIntent.putExtras(extras);
    fillInIntent.addCategory(Intent.CATEGORY_DEFAULT);
    rv.setOnClickFillInIntent(R.id.app_thumb, fillInIntent);
    rv.setOnClickFillInIntent(R.id.app_name, fillInIntent);

しかし、アイコンまたはラベルをクリックしても、何もしません。

LogCat は、クリックすると次のように表示されます。

07-24 11:51:06.153: E/DatabaseUtils(16583): Writing exception to parcel
07-24 11:51:06.153: E/DatabaseUtils(16583): java.lang.SecurityException: Permission Denial: get/set setting for user asks to run as user -2 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL
07-24 11:51:06.153: E/DatabaseUtils(16583):     at com.android.server.am.ActivityManagerService.handleIncomingUser(ActivityManagerService.java:14643)
07-24 11:51:06.153: E/DatabaseUtils(16583):     at android.app.ActivityManager.handleIncomingUser(ActivityManager.java:2469)
07-24 11:51:06.153: E/DatabaseUtils(16583):     at com.android.providers.settings.SettingsProvider.call(SettingsProvider.java:688)
07-24 11:51:06.153: E/DatabaseUtils(16583):     at android.content.ContentProvider$Transport.call(ContentProvider.java:325)
07-24 11:51:06.153: E/DatabaseUtils(16583):     at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:275)
07-24 11:51:06.153: E/DatabaseUtils(16583):     at android.os.Binder.execTransact(Binder.java:404)
07-24 11:51:06.153: E/DatabaseUtils(16583):     at dalvik.system.NativeStart.run(Native Method)


07-24 11:51:06.384: W/ActivityManager(16583): destPackageName = null
4

2 に答える 2

1

問題の潜在的な原因を 3 つ特定しました。

  1. クリックリスナーを設定AppWidgetManagerした後、で更新する必要がありますupdateAppWidget(...);

  2. あなたがsetOnClickFillInIntent()正しく使用しているかどうかはわかりません。あなたはそれを意図的に使用しており、それが何をするか知っていますか? ウィジェットにListView. 使わないとsetOnClickPendingIntent().

  3. エラーはここにありますfillInIntent.setPackage(packageName);か? 私はそうpackageNameかもしれないと思いますnull

于 2014-07-24T11:07:13.023 に答える
0

@スポーティー

1) この問題を抱えていた他の人にとっては、私にとっては、 AndroidManifest.xml ファイルに間違った名前のアクティビティがあったという単純なケースでした。

アクティビティ名が修正されると(私の場合は間違ったパッケージ名が記載されていました)、権限を追加する必要はありませんでした。

@) マニフェストで minSdkVersion を 8 から 11 に変更すると、このエラーが発生します。8 または 9 に戻しましたが、エラーは発生しなくなりました。

マニフェストで minSdkVersion を変更してみてください。バージョン 10、11、および 12 でクラッシュとエラーの結果を繰り返すことができました (私のアプリはクラッシュし、LogCat に「android.permission.INTERACT_ACROSS_USERS_FULL が必要です」と表示されます)。

さらにクエリが必要な場合はお知らせください

ありがとう

于 2014-07-24T10:58:33.627 に答える