Question Aucune activité à gérer Intention: android.intent.action.VIEW


Ceci est mon code pour lire le fichier audio enregistré 3gp

 Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
        Uri data = Uri.parse(path);
        intent.setDataAndType(data, "audio/mp3");
        startActivity(intent);

Mais en l'exécutant dans mon appareil HTC (Android 2.2 Froyo) affiche une exception:

05-04 16:37:37.597: WARN/System.err(4065): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=/mnt/sdcard/mnt/sdcard/audio-android.3gp typ=audio/mp3 }
05-04 16:37:37.597: WARN/System.err(4065):     at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1567)
05-04 16:37:37.597: INFO/ActivityManager(92): Starting activity: Intent { act=android.intent.action.VIEW dat=/mnt/sdcard/mnt/sdcard/audio-android.3gp typ=audio/mp3 }
05-04 16:37:37.607: WARN/System.err(4065):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1537)
05-04 16:37:37.607: WARN/System.err(4065):     at android.app.Activity.startActivityForResult(Activity.java:2858)
05-04 16:37:37.607: WARN/System.err(4065):     at android.app.Activity.startActivity(Activity.java:2964)
05-04 16:37:37.607: WARN/System.err(4065):     at com.ey.camera.AudioRecorder.playAudio(AudioRecorder.java:244)
05-04 16:37:37.607: WARN/System.err(4065):     at com.ey.camera.AudioRecorder$4.onClick(AudioRecorder.java:225)
05-04 16:37:37.607: WARN/System.err(4065):     at android.view.View.performClick(View.java:2408)
05-04 16:37:37.607: WARN/System.err(4065):     at android.view.View$PerformClick.run(View.java:8817)
05-04 16:37:37.607: WARN/System.err(4065):     at android.os.Handler.handleCallback(Handler.java:587)
05-04 16:37:37.607: WARN/System.err(4065):     at android.os.Handler.dispatchMessage(Handler.java:92)
05-04 16:37:37.607: WARN/System.err(4065):     at android.os.Looper.loop(Looper.java:144)
05-04 16:37:37.607: WARN/System.err(4065):     at android.app.ActivityThread.main(ActivityThread.java:4937)
05-04 16:37:37.607: WARN/System.err(4065):     at java.lang.reflect.Method.invokeNative(Native Method)
05-04 16:37:37.607: WARN/System.err(4065):     at java.lang.reflect.Method.invoke(Method.java:521)
05-04 16:37:37.607: WARN/System.err(4065):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-04 16:37:37.607: WARN/System.err(4065):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-04 16:37:37.607: WARN/System.err(4065):     at dalvik.system.NativeStart.main(Native Method)

Dans la tablette Galaxy, cela fonctionne bien. Comment puis-je résoudre ce problème?


56
2018-05-04 11:30


origine


Réponses:


Les adresses URL doivent être précédées de http: //

Uri uri = Uri.parse("www.google.com");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);

lève une ActivityNotFoundException. Si vous préfixez "http: //", le problème est résolu.

Uri uri = Uri.parse("http://www.google.com");

Peut ne pas aider OP, mais j'ai fini par chercher la même exception et peut-être que cela aide les autres.


121
2018-06-03 09:47



C'est la bonne façon de le faire.

    try
    {
    Intent myIntent = new Intent(android.content.Intent.ACTION_VIEW);
    File file = new File(aFile.getAbsolutePath()); 
    String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(Uri.fromFile(file).toString());
    String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
    myIntent.setDataAndType(Uri.fromFile(file),mimetype);
    startActivity(myIntent);
    }
    catch (Exception e) 
    {
        // TODO: handle exception
        String data = e.getMessage();
    }

vous devez importer import android.webkit.MimeTypeMap;


30
2018-06-20 09:58



Si vous obtenez également cette erreur lorsque vous essayez d'ouvrir une page Web à partir de votre application Android, c'est parce que votre URL ressemble à ceci:

www.google.com

au lieu de: https://www.google.com ou http://www.google.com

Ajoutez ce code à votre activité / fragment:

 public void openWebPage(String url) {

    Uri webpage = Uri.parse(url);

    if (!url.startsWith("http://") && !url.startsWith("https://")) {
        webpage = Uri.parse("http://" + url);
    }

    Intent intent = new Intent(Intent.ACTION_VIEW, webpage);
    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    }
}

il suffit de passer votre URL à openWebPage(). S'il est déjà préfixé par https:// ou http:// alors vous êtes prêt à partir, sinon la déclaration if gère cela pour vous


22
2018-01-25 10:49



Réponse de Maragues m'a fait vérifier la sortie logcat. Apparaît que le chemin que vous passez à Uri doit être préfixé par
file:/

Puisque c'est un chemin local vers votre stockage.

Vous voudrez peut-être aussi regarder le chemin lui-même.

`05-04 16:37:37.597: WARN/System.err(4065): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=/mnt/sdcard/mnt/sdcard/audio-android.3gp typ=audio/mp3 }`

Le point de montage semble apparaître deux fois dans le chemin complet.


15
2017-08-25 18:26



Pour moi, en essayant d'ouvrir un lien:

Uri uri = Uri.parse("https://www.facebook.com/abc/");
                Intent intent = new Intent(Intent.ACTION_VIEW, uri);
                startActivity(intent);

J'ai eu la même erreur  android.content.ActivityNotFoundException: No Activity found to handle Intent

Le problème était parce que je n'avais aucune application pouvant ouvrir des URL (c.-à-d.   navigateurs) installés sur mon téléphone. Donc, après l'installation d'un navigateur, le   le problème a été résolu.

* Leçon: Assurez-vous qu'il existe au moins une application qui gère l'intention que vous appelez *


8
2017-08-02 07:30



J'ai eu ce même problème, alors je regardais l'intention qui est enregistrée dans LogCat. Lors de la visualisation de la vidéo à partir de la Galerie, elle appelait la même intention Intent.View, mais définissait le Type sur "audio / *", qui corrigeait mon problème et ne nécessitait pas d'importer MimeTypeMap. Exemple:

Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
Uri data = Uri.parse(path);
intent.setDataAndType(data, "audio/*");
startActivity(intent);

2
2017-12-19 14:49



Si vous ne transmettez pas l'URL Web correcte et que vous ne possédez pas de navigateur, ActivityNotFoundException se produit, vérifiez donc ces exigences ou gérez explicitement l'exception. Cela peut résoudre votre problème.

public static void openWebPage(Context context, String url) {
    try {
        if (!URLUtil.isValidUrl(url)) {
            Toast.makeText(context, " This is not a valid link", Toast.LENGTH_LONG).show();   
        } else {
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setData(Uri.parse(url));
            context.startActivity(intent);
        }
    } catch (ActivityNotFoundException e) {
        Toast.makeText(context, " You don't have any browser to open web page", Toast.LENGTH_LONG).show();
    }
}

1
2018-03-01 09:15



J'ai deux idée:

Tout d'abord: si vous voulez lire un fichier 3gp, vous devez utiliser les types mime "audio / 3gpp" ou "audio / mpeg"

Et deuxièmement: vous pouvez essayer la méthode d'utilisation setData(data) pour intent sans aucun type de mime.

J'espère que cela t'aides.


0
2018-05-04 11:46



Si cette exception avait même changé pour

"l'audio/*"

Mais merci à @Stan Je suis devenu très simple mais utile solution:

Uri.fromFile(File(content)) au lieu Uri.parse(path)

 val intent =Intent(Intent.ACTION_VIEW)
                    intent.setDataAndType(Uri.fromFile(File(content)),"audio/*")
                    startActivity(intent)

J'espère que ça aide quelqu'un à résoudre son problème.


0
2018-04-23 14:17