To jest mój kod do odtwarzania nagranego pliku audio 3gp
Intent intent = new Intent(android.content.Intent.ACTION_VIEW);
Uri data = Uri.parse(path);
intent.setDataAndType(data, "audio/mp3");
startActivity(intent);
Ale podczas uruchamiania go na moim urządzeniu HTC (Android 2.2 Froyo) pokazuje wyjątek:
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)
W tablecie Galaxy działa dobrze. Jak mogę rozwiązać ten problem?
android
android-2.2-froyo
galaxy-tab
jennifer
źródło
źródło
Odpowiedzi:
Adresy URL muszą być poprzedzone przedrostkiem http: //
zgłasza ActivityNotFoundException. Jeśli dodasz „http: //”, problem został rozwiązany.
Może nie pomóc OP, ale znalazłem się tutaj, szukając tego samego wyjątku i może pomaga innym.
źródło
file://
brakowało w moim przypadku, dopóki nie zmieniłemUri.parse()
naUri.fromFile()
.Uri.parse(Uri.decode(encodedString))
Jeśli również pojawia się ten błąd podczas próby otwarcia strony internetowej z aplikacji na Androida, oznacza to, że Twój adres URL wygląda następująco:
www.google.com
zamiast:
https://www.google.com
lubhttp://www.google.com
dodaj ten kod do swojej Aktywności / Fragmentu:
po prostu przekaż swój adres URL do
openWebPage()
. Jeśli jest już poprzedzony przedrostkiemhttps://
lub,http://
możesz zacząć, w przeciwnym razie instrukcja if załatwi to za Ciebieźródło
To jest właściwy sposób, aby to zrobić.
musisz zaimportować import android.webkit.MimeTypeMap;
źródło
Dla mnie, gdy próbuję otworzyć link:
Mam ten sam błąd
android.content.ActivityNotFoundException: No Activity found to handle Intent
* Lekcja: Upewnij się, że istnieje co najmniej jedna aplikacja, która obsługuje intencję, do której dzwonisz *
źródło
Odpowiedź udzielona przez Maragues sprawiła, że sprawdziłem wyjście logcat. Wygląda na to, że ścieżka, którą przekazujesz do Uri, musi być poprzedzona prefiksem
file:/
Ponieważ jest to lokalna ścieżka do twojego magazynu.
Możesz też spojrzeć na samą ścieżkę.
Punkt montowania wydaje się pojawiać dwa razy na pełnej ścieżce.
źródło
Jeśli nie przekażesz poprawnego adresu URL i nie masz przeglądarki, wystąpi wyjątek ActivityNotFoundException, więc sprawdź te wymagania lub jawnie obsłuż wyjątek. To może rozwiązać twój problem.
źródło
Sprawdź tę przydatną metodę:
URLUtil.guessUrl(urlString)
To sprawia, że google.com -> http://google.com
źródło
Miałem ten sam problem, więc patrzyłem na intencję, która jest zalogowana w LogCacie. Podczas oglądania wideo z Galerii wywoływał tę samą intencję Intent.View, ale ustawił Type na „audio / *”, co rozwiązało mój problem i nie wymaga importowania MimeTypeMap. Przykład:
źródło
Gdyby ten wyjątek zmienił się nawet na
Ale dzięki @Stan zmieniłem bardzo proste, ale użyteczne rozwiązanie:
Uri.fromFile(File(content))
zamiastUri.parse(path)
Mam nadzieję, że pomoże to komuś rozwiązać jego problem.
źródło
Jeśli masz ten błąd w swoim logcat, użyj tego kodu, pomóż mi
również
źródło
Najpierw wypróbuj ten kod w AndroidManifest
Jeśli ten kod działa, to dobrze. Ale jeśli nie. Wypróbuj ten kod, z której klasy chcesz przekazać dane lub identyfikator URI.
Mam nadzieję, że to rozwiąże Twój problem. Dziękuję Ci
źródło
Mam dwa pomysły:
Po pierwsze: jeśli chcesz odtworzyć plik 3gp, użyj typów MIME „audio / 3gpp” lub „audio / mpeg”
A po drugie: można spróbować metody użycia
setData(data)
dlaintent
bez jakiegokolwiek typu MIME.Mam nadzieję że to pomoże.
źródło
Ten wyjątek może wystąpić podczas obsługi
Deep linking
lub adresu URL przeglądarki, jeśli nie ma zainstalowanej domyślnej. W przypadku głębokiego linkowania może nie być zainstalowana żadna aplikacja, która może przetworzyć link w formaciemyapp://mylink
.Możesz użyć roztworu mandarynki dla API do 29:
W przypadku interfejsu API> = 30 zobacz intent.resolveActivity zwraca wartość null w interfejsie API 30 .
źródło
spróbuj sprawdzić z dowolnym adresem URL, takim jak add
https://www.google.com
w ścieżce i rozpocznij działanie, jeśli to działa, niż dodajesz złą ścieżkę
źródło