Не найдена активность для обработки намерений

Я пытаюсь запустить намерение открыть ссылку на рынок Android.

часть манифеста Android выглядит следующим образом:

<activity android:name="com.surreall.sixdice.Start" android:label="Six Dice" android:screenOrientation="portrait" android:configChanges="keyboardHidden|orientation">
    <intent-filter>
                <action android:name="android.intent.action.MAIN" />                               
                <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
                <action android:name="android.intent.action.VIEW" />  
                <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

запуск намерения выглядит так:

public void onClick(View v) {
        String PublisherID = "pub:surreallgames";
        Uri marketUri = Uri.parse("market://search?q="+PublisherID);
        Intent marketIntent = new Intent(Intent.ACTION_VIEW, marketUri);                    
        startActivity(marketIntent);


                }

выход logcat:

06-17 17:38:47.393: E/AndroidRuntime(476): FATAL EXCEPTION: main
06-17 17:38:47.393: E/AndroidRuntime(476): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=market://search?q=pub:surreallgames }
06-17 17:38:47.393: E/AndroidRuntime(476):  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1409)
06-17 17:38:47.393: E/AndroidRuntime(476):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1379)
06-17 17:38:47.393: E/AndroidRuntime(476):  at android.app.Activity.startActivityForResult(Activity.java:2827)
06-17 17:38:47.393: E/AndroidRuntime(476):  at android.app.Activity.startActivity(Activity.java:2933)
06-17 17:38:47.393: E/AndroidRuntime(476):  at com.surreall.sixdice.Start$9.onClick(Start.java:265)
06-17 17:38:47.393: E/AndroidRuntime(476):  at android.view.View.performClick(View.java:2485)
06-17 17:38:47.393: E/AndroidRuntime(476):  at android.view.View$PerformClick.run(View.java:9080)
06-17 17:38:47.393: E/AndroidRuntime(476):  at android.os.Handler.handleCallback(Handler.java:587)
06-17 17:38:47.393: E/AndroidRuntime(476):  at android.os.Handler.dispatchMessage(Handler.java:92)
06-17 17:38:47.393: E/AndroidRuntime(476):  at android.os.Looper.loop(Looper.java:123)
06-17 17:38:47.393: E/AndroidRuntime(476):  at android.app.ActivityThread.main(ActivityThread.java:3683)
06-17 17:38:47.393: E/AndroidRuntime(476):  at java.lang.reflect.Method.invokeNative(Native Method)
06-17 17:38:47.393: E/AndroidRuntime(476):  at java.lang.reflect.Method.invoke(Method.java:507)
06-17 17:38:47.393: E/AndroidRuntime(476):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
06-17 17:38:47.393: E/AndroidRuntime(476):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
06-17 17:38:47.393: E/AndroidRuntime(476):  at dalvik.system.NativeStart.main(Native Method)

Ответы на вопрос(5)

Попробуйте добавить

<category android:name="android.intent.category.DEFAULT" />

на вызывающую активность.

y, но если такого приложения нет (нет Activity для обработки этого намерения) - вы можете просто попытаться открыть URI в браузере, как в этом примере:

public static void rateApp(Context context) {
    try {
        context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + context.getPackageName())));
    } catch (android.content.ActivityNotFoundException anfe) {
        viewInBrowser(context, "https://play.google.com/store/apps/details?id=" + context.getPackageName());
    }
}

public static void viewInBrowser(Context context, String url) {
    Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    if (null != intent.resolveActivity(context.getPackageManager())) {
        context.startActivity(intent);
    }
}
 16 мая 2017 г., 16:50
Да, исправлена опечатка.
 16 мая 2017 г., 15:38
Ты имеешь ввидуviewInBrowser в строке 5?
 17 февр. 2019 г., 07:35
Это лучший ответ ... Он обрабатывает исключение и предоставляет альтернативные средства доступа к игровому магазину.

Вы можете использовать метод Intent.createChooser () для безопасного запуска Intent. Если не существует приложения, которое может обработать ваше намерение, появится диалоговое окно, сообщающее пользователю только об этом. Однако если установлен Google Play Store, пользователь может выбрать «открыть». намерение в магазине Play.

startActivity(Intent.createChooser(marketIntent, "dialogTitle"));
 02 июн. 2015 г., 15:36
Это работает точно так, как вы сказали, но одно предостережение в том, что программа выбора имеет прозрачное тело, поэтому очень трудно усугубить сообщение, когда у вас нет установленного приложения.
private void OpenStoreIntent(){
        String url="";
        Intent storeintent=null;
        try {
            url = "market://details?id=com.myapp.packagename";
            storeintent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            storeintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
            context.startActivity(storeintent);
        } cat,ch ( final Exception e ) {
            url = "https://play.google.com/store/apps/details?id=com.myapp.packagename";
            storeintent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
            storeintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
            context.startActivity(storeintent);
        }

    }
Решение Вопроса

Вы запускаете этот код в среде Android, в которой отсутствует Google Play Store, такой как эмулятор, Kindle Fire и т. Д.

Если вы столкнулись с этим на эмуляторе, протестируйте этот путь к коду на устройстве с Play Store.

Если вы столкнулись с этим на каком-то оборудовании, на котором отсутствует Play Store, или если вы планируете распространять свое приложение на устройства, на которых нет Play Store, либо обработайте исключение, либо используйтеPackageManager а такжеresolveActivity() определить, если вашIntent удастся перед вызовомstartActivity().

if(intent.resolveActivity(getPackageManager()) != null)
    startActivityForResult(intent, 0);
else
    ...
 14 мая 2014 г., 05:16
shooootttt, я пытаюсь открыть market: // url, так как 2 дня на эмуляторе, потому что он не имеет marketplace :( Phonegap 3.4

Ваш ответ на вопрос