wake-up-neo.net

Es wurde keine Aktivität für Absicht gefunden: Android.intent.action.VIEW

Dies ist mein Code, um die aufgenommene Audio-3GP-Datei abzuspielen

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

Beim Ausführen auf meinem HTC-Gerät (Android 2.2 Froyo) tritt jedoch eine Ausnahme auf:

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)

In Galaxy Tablet funktioniert es gut. Wie kann ich dieses Problem beheben?

84
jennifer

URL-Adressen müssen mit http: // vorangestellt werden

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

löst eine ActivityNotFoundException aus. Wenn Sie "http: //" voranstellen, ist das Problem behoben.

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

Kann nicht helfen, OP, aber ich landete hier auf der Suche nach der gleichen Ausnahme und vielleicht hilft es anderen.

140
Maragues

Das ist der richtige Weg.

    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();
    }

sie müssen importieren importieren Android.webkit.MimeTypeMap;

33
Nitan Sehgal

Wenn dieser Fehler auch auftritt, wenn Sie versuchen, eine Webseite von Ihrer Android App aus zu öffnen, sieht Ihre URL folgendermaßen aus:

www.google.com

anstelle von: https://www.google.com oder http://www.google.com

füge diesen Code zu deiner Aktivität/deinem Fragment hinzu:

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

gib einfach deine url an openWebPage() weiter. Wenn ihm bereits das Präfix https:// Oder http:// Vorangestellt ist, können Sie loslegen. Anderenfalls übernimmt die if-Anweisung dies für Sie

28

Für mich beim Versuch, einen Link zu öffnen:

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

Ich habe den gleichen FehlerAndroid.content.ActivityNotFoundException: No Activity found to handle Intent

Das Problem war, weil ich keine App hatte, die URLs (d. H. Browser) öffnen kann, die in meinem Telefon installiert waren. Nach der Installation eines Browsers war das Problem also behoben.

* Lektion: Stellen Sie sicher, dass es mindestens eine App gibt, die die Absicht behandelt, die Sie aufrufen *

16
erluxman

Maragues hat mich dazu gebracht, die logcat-Ausgabe zu überprüfen. Anscheinend muss dem Pfad, den Sie an Uri übergeben, ein Präfix vorangestellt werden
file:/

Da es ein lokaler Pfad zu Ihrem Speicher ist.

Vielleicht möchten Sie auch den Pfad selbst betrachten.

`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 }`

Der Einhängepunkt scheint auf dem vollständigen Pfad zweimal zu erscheinen.

16
Joel Bodega

Wenn Sie nicht die richtige Web-URL übergeben und keinen Browser haben, tritt ActivityNotFoundException auf. Überprüfen Sie daher diese Anforderungen, oder behandeln Sie die Ausnahme explizit. Das kann dein Problem lösen.

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();
    }
}
7

Wenn Sie diesen Fehler in Ihrem Logcat haben, verwenden Sie diesen Code, der mir hilft

 Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setDataAndType(Uri.fromFile(new File(data.getLocation())), "audio/*");
            try {
                context.startActivity(intent);
            } catch (ActivityNotFoundException e) {
                Log.d("error", e.getMessage());
            }

ebenfalls

   Intent intent = new Intent(MediaStore.INTENT_ACTION_MUSIC_PLAYER);
            intent.setDataAndType(Uri.fromFile(new File(data.getLocation())), "audio/*");
            try {
                context.startActivity(intent);
            } catch (ActivityNotFoundException e) {
                Log.d("error", e.getMessage());
            }
4
Mujahid khan

Ich hatte das gleiche Problem, also habe ich mir die Absicht angesehen, die in LogCat protokolliert wird. Beim Anzeigen des Videos aus der Galerie wurde dieselbe Intent.View-Absicht aufgerufen, aber der Typ wurde auf "audio/*" festgelegt, was mein Problem behebt und das Importieren von MimeTypeMap nicht erforderlich macht. Beispiel:

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

Überprüfen Sie diese nützliche Methode:

URLUtil.guessUrl(urlString)

Es macht google.com -> http://google.com

3
niko1312

Hatte diese Ausnahme sogar auf geändert

"Audio/*"

Aber danke an @ Stan Ich habe eine sehr einfache, aber nützliche Lösung gefunden:

Uri.fromFile(File(content)) statt Uri.parse(path)

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

Hoffe, es hilft jemandem, sein Problem zu beheben.

3
Serg Burlaka

Ich habe zwei Ideen:

Erstens: Wenn Sie eine 3GP-Datei abspielen möchten, sollten Sie die MIME-Typen "Audio/3GPP" oder "Audio/MPEG" verwenden.

Und zweitens: Sie können die Methode setData(data) für intent ohne MIME-Typ verwenden.

Hoffe das hilft.

1
Pasha