Dies ist mein Code zum Abspielen der aufgenommenen Audio-3GP-Datei
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) wird jedoch eine Ausnahme angezeigt:
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?
android
android-2.2-froyo
galaxy-tab
Jennifer
quelle
quelle
Antworten:
Vor URL-Adressen muss http: // stehen
löst eine ActivityNotFoundException aus. Wenn Sie "http: //" voranstellen, ist das Problem behoben.
Kann OP nicht helfen, aber ich bin hier gelandet und habe nach der gleichen Ausnahme gesucht und vielleicht hilft es anderen.
quelle
file://
in meinem Fall fehlte , bis ich geändertUri.parse()
zuUri.fromFile()
.Uri.parse(Uri.decode(encodedString))
Wenn Sie auch diese Fehlermeldung erhalten, wenn Sie versuchen, eine Webseite über Ihre Android-App zu öffnen, liegt dies daran, dass Ihre URL folgendermaßen aussieht:
www.google.com
anstelle von:
https://www.google.com
oderhttp://www.google.com
Fügen Sie diesen Code Ihrer Aktivität / Ihrem Fragment hinzu:
Gib einfach deine URL an weiter
openWebPage()
. Wenn bereits ein Präfix vorangestellt isthttps://
oderhttp://
Sie bereit sind, kann die if-Anweisung dies für Sie erledigenquelle
Dies ist der richtige Weg.
Sie müssen import android.webkit.MimeTypeMap importieren;
quelle
Für mich beim Versuch, einen Link zu öffnen:
Ich habe den gleichen Fehler bekommen
android.content.ActivityNotFoundException: No Activity found to handle Intent
* Lektion: Stellen Sie sicher, dass mindestens eine App vorhanden ist, die die von Ihnen angerufene Absicht verarbeitet. *
quelle
Die Antwort von Maragues brachte mich dazu, die Logcat-Ausgabe zu überprüfen. Es scheint, dass dem Pfad, den Sie an Uri übergeben, ein Präfix vorangestellt werden muss
file:/
Da es sich um einen lokalen Pfad zu Ihrem Speicher handelt.
Vielleicht möchten Sie auch den Pfad selbst betrachten.
Der Einhängepunkt scheint im vollständigen Pfad zweimal zu erscheinen.
quelle
Wenn Sie nicht die richtige Web-URL übergeben und keinen Browser haben, tritt ActivityNotFoundException auf. Überprüfen Sie diese Anforderungen, oder behandeln Sie die Ausnahme explizit. Das kann Ihr Problem lösen.
quelle
Überprüfen Sie diese nützliche Methode:
URLUtil.guessUrl(urlString)
Es macht google.com -> http://google.com
quelle
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, der Typ wurde jedoch auf "audio / *" gesetzt, wodurch mein Problem behoben wurde und kein Import von MimeTypeMap erforderlich ist. Beispiel:
quelle
Hatte diese Ausnahme sogar geändert
Aber danke an @Stan, ich habe eine sehr einfache, aber nützliche Lösung gefunden:
Uri.fromFile(File(content))
stattdessenUri.parse(path)
Hoffe, es hilft jemandem, sein Problem zu beheben.
quelle
Wenn Sie diesen Fehler in Ihrem Logcat haben, verwenden Sie diesen Code, der mir hilft
ebenfalls
quelle
Versuchen Sie zuerst diesen Code in AndroidManifest
Wenn dieser Code funktioniert, ist das in Ordnung. Aber wenn nicht. Probieren Sie diesen Code aus, aus welcher Klasse Sie die Daten oder die URL übergeben möchten.
Hoffe das wird dein Problem lösen. Danke dir
quelle
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 verwenden Methode versuchen ,
setData(data)
fürintent
ohne MIME - Typ.Hoffe das hilft.
quelle
Diese Ausnahme kann ausgelöst werden, wenn Sie
Deep linking
einen Browser behandeln oder eine URL verwenden, wenn keine Standardeinstellung installiert ist. Bei Deep Linking ist möglicherweise keine Anwendung installiert, die einen Link im Format verarbeiten kannmyapp://mylink
.Sie können die Mandarinenlösung für API bis zu 29 verwenden:
Für API> = 30 siehe intent.resolveActivity gibt in API 30 null zurück .
quelle
Versuchen Sie es mit einer URL wie add
https://www.google.com
im Pfad und starten Sie die Aktivität, wenn sie funktioniert, als Sie einen falschen Pfad hinzufügen
quelle