Отказ в разрешении на намерение внешней деятельности

1

Вся моя идея немного сложнее, но просто сломать вещи, чтобы они были просты и здесь. У меня есть кнопка на виджетах, что мне нужно открыть активность "мест" в официальное приложение facebook.

Вот код, который я использую:

 Intent PlacesIntent = new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER).setComponent(new ComponentName("com.facebook.katana", "com.facebook.katana.activity.places.PlacesNearbyActivity"));
            PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, PlacesIntent, 0);
            views.setOnClickPendingIntent(R.id.places, pendingIntent);

Я получаю эту ошибку в logcat:

 11-06 22:26:48.117: WARN/ActivityManager(85): Permission denied: checkComponentPermission() reqUid=10055
    11-06 22:26:48.117: WARN/ActivityManager(85): Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.facebook.katana/.activity.places.PlacesNearbyActivity bnds=[371,129][428,203] } from null (pid=-1, uid=10157) requires null
    11-06 22:26:48.127: WARN/ActivityManager(85): Unable to send startActivity intent
    11-06 22:26:48.127: WARN/ActivityManager(85): java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.facebook.katana/.activity.places.PlacesNearbyActivity bnds=[371,129][428,203] } from null (pid=-1, uid=10157) requires null
    11-06 22:26:48.127: WARN/ActivityManager(85):     at com.android.server.am.ActivityManagerService.startActivityLocked(ActivityManagerService.java:3223)
    11-06 22:26:48.127: WARN/ActivityManager(85):     at com.android.server.am.ActivityManagerService.startActivityInPackage(ActivityManagerService.java:3980)
    11-06 22:26:48.127: WARN/ActivityManager(85):     at com.android.server.am.PendingIntentRecord.sendInner(PendingIntentRecord.java:212)
    11-06 22:26:48.127: WARN/ActivityManager(85):     at com.android.server.am.ActivityManagerService.startActivityIntentSender(ActivityManagerService.java:3843)
    11-06 22:26:48.127: WARN/ActivityManager(85):     at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:210)
    11-06 22:26:48.127: WARN/ActivityManager(85):     at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:1480)
    11-06 22:26:48.127: WARN/ActivityManager(85):     at android.os.Binder.execTransact(Binder.java:288)
    11-06 22:26:48.127: WARN/ActivityManager(85):     at dalvik.system.NativeStart.run(Native Method)

Если я использую,

Intent PlacesIntent1 = new Intent(Intent.ACTION_MAIN).addCategory(Intent.CATEGORY_LAUNCHER).setComponent(new ComponentName("com.facebook.katana", "com.facebook.katana.HomeActivity"));
            PendingIntent pendingIntent1 = PendingIntent.getActivity(context, 0, PlacesIntent1, 0);
            views.setOnClickPendingIntent(R.id.facebook, pendingIntent1);

Все отлично работает, и оно открывает домашнюю деятельность, но это не совсем то, что я пытаюсь сделать.

Я пробовал

com.facebook.katana.activity.places.PlacesNearbyActivity - I actually see a respons in the logcat about the denail with this one
com.facebook.katana.activity.PlacesNearbyActivity
com.facebook.katana.places.PlacesNearbyActivity
com.facebook.katana.PlacesNearbyActivity

и ничего не происходит с другими

Вот что я вижу в logcat, когда вручную открываю действия на моем телефоне:

11-06 20:20:38.295: INFO/ActivityManager(85): Starting activity: Intent { cmp=com.facebook.katana/.activity.places.PlacesNearbyActivity }

11-06 22:03:28.027: INFO/ActivityManager(85): Starting activity: Intent { flg=0x4000000 cmp=com.facebook.katana/.HomeActivity }

Итак, это дает вам представление о том, как я получил свою информацию.

Теги:
components
android-intent
android-widget

2 ответа

0
Лучший ответ

У меня есть кнопка на виджетах, что мне нужно открыть активность "мест" в официальном приложении facebook.

Так как кажется, что Facebook не поддерживает интеграцию со своим Android-приложением, пожалуйста, не делайте этого.

Permission denied: checkComponentPermission() reqUid=10055

Эта активность может быть запущена только Facebook.

1

Я не согласен с ответом CommonsWare. Ответ также совсем не принят, хотя я думал, что ответ правильный один раз, затем я попытался выполнить код и выяснил, что вы можете открыть мероприятие Activity из другого приложения, используя следующий код...

appAction = Intent.ACTION_VIEW;
appPackage = "com.facebook.katana";
appActivity = "com.facebook.katana.IntentUriHandler";

data = Uri.parse("facebook:/places").buildUpon().appendQueryParameter("user", Long.toString(post.getSourceId())).appendQueryParameter("post", post.getPostId()).build();

Intent intent = new Intent(appAction);
intent.setClassName(appPackage, appActivity);

intent.setData(data);
ctx.startActivity(intent);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню