Ich habe versucht, meine lokalen Videos (Raw-Ordner) mit Intent.ActionView ausführen zu lassen. Wenn ich den Intent erstelle und Daten eintippe und dann starte, bekomme ich einen Fehler. Bitte beachten Sie den folgenden Code & Fehler.Warum Intent.ActionView einen Fehler mit einer MP4-Datei wirft
Ich habe eine Menge verschiedener Möglichkeiten ausprobiert, um zu der Datei zu kommen, die denkt, dass sie vielleicht nicht gefunden wird, aber ich denke nicht, dass das das Problem ist. Ich habe verschiedene Videoformate ausprobiert, aber ich glaube auch nicht, dass das das Problem ist.
Wenn ich eine URL zu einem MP4 in SetDataAndType verwenden, die ohne einen Fehler ausgeführt wird. Vielleicht ist das ein Zugriffsfehler? An diesem Punkt habe ich wirklich keine Ahnung. Ich hoffe, dass jemand das Problem, auf das ich hier stoße, erklären kann.
Code:
// Create the intent and push the mp4 to it, lets run a video!
Intent videoIntent = new Intent (Intent.ActionView);
// Video is MP4 format
videoIntent.SetDataAndType (Uri.Parse ("android.resource://" + PackageName + "/raw/bunny"), "video/*");
// Crash here, Error: Android.Content.ActivityNotFoundExeception
StartActivity (videoIntent);
Fehler:
Android.Content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=android.resource://com.test.videotest/raw/bunny typ=video/* }
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [0x0000c] in /Users/builder/data/lanes/3053/a94a03b5/source/mono/external/referencesource/mscorlib/system/runtime/exceptionservices/exceptionservicescommon.cs:143
at Android.Runtime.JNIEnv.CallNonvirtualVoidMethod (IntPtr jobject, IntPtr jclass, IntPtr jmethod, Android.Runtime.JValue* parms) [0x00084] in /Users/builder/data/lanes/3053/a94a03b5/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.g.cs:1029
at Android.Content.ContextWrapper.StartActivity (Android.Content.Intent intent) [0x00070] in /Users/builder/data/lanes/3053/a94a03b5/source/monodroid/src/Mono.Android/platforms/android-19/src/generated/Android.Content.ContextWrapper.cs:3238
at VideoTest.MainActivity.<OnCreate>m__0 (System.Object , System.EventArgs) [0x00034] in /Users/alex/Projects/VideoTest/VideoTest/MainActivity.cs:33
at Android.Views.View+IOnClickListenerImplementor.OnClick (Android.Views.View v) [0x0000d] in /Users/builder/data/lanes/3053/a94a03b5/source/monodroid/src/Mono.Android/platforms/android-19/src/generated/Android.Views.View.cs:1780
at Android.Views.View+IOnClickListenerInvoker.n_OnClick_Landroid_view_View_ (IntPtr jnienv, IntPtr native__this, IntPtr native_v) [0x00011] in /Users/builder/data/lanes/3053/a94a03b5/source/monodroid/src/Mono.Android/platforms/android-19/src/generated/Android.Views.View.cs:1745
at at (wrapper dynamic-method) System.Object:123eb72a-af75-42a8-b3aa-717e415176e4 (intptr,intptr,intptr)
at --- End of managed exception stack trace ---
at android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=android.resource://com.test.videotest/raw/bunny typ=video/* }
at at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1798)
at at android.app.Instrumentation.execStartActivity(Instrumentation.java:1512)
at at android.app.Activity.startActivityForResult(Activity.java:3930)
at at android.app.Activity.startActivityForResult(Activity.java:3890)
at at android.app.Activity.startActivity(Activity.java:4213)
at at android.app.Activity.startActivity(Activity.java:4181)
at at mono.android.view.View_OnClickListenerImplementor.n_onClick(Native Method)
at at mono.android.view.View_OnClickListenerImplementor.onClick(View_OnClickListenerImplementor.java:29)
at at android.view.View.performClick(View.java:5204)
at at android.view.View$PerformClick.run(View.java:21155)
at at android.os.Handler.handleCallback(Handler.java:739)
at at android.os.Handler.dispatchMessage(Handler.java:95)
at at android.os.Looper.loop(Looper.java:148)
at at android.app.ActivityThread.main(ActivityThread.java:5422)
at at java.lang.reflect.Method.invoke(Native Method)
at at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Hinweis:
Sie können dies leicht versuchen, sich folgendes mit:
- Crea te eine neue Xamarin Android App
- Kopieren Sie den obigen Code in die Schaltfläche klicken (Pre-made mit dem Projekt)
- Erstellen Sie einen rohen Ordner in "Ressourcen" und setzen Sie alle MP4-Datei (benennen Sie es oder benennen Sie das Video in der
SetDataAndType
) - Führen Sie die Anwendung auf einem Gerät (Simulator nicht zu handhaben scheint dies so habe ich mein Nexus 5X)
Weiter mehr:
Mein Gerät verfügt sowohl über VLC Player und Google Fotos ins können beide MP4-Dateien abspielen. Und als Beweis, wenn ich die data
zu einer URL ändere (Verbindung zu einer MP4-Datei), wird dies gut funktionieren.
Dies ist nicht eine Frage der Datei nicht gefunden, da ich den gleichen Pfad mit einem VideoView
getestet habe und es funktioniert gut.
Mögliche Duplikat von [Wie man Videos in Android aus Assets Ordner oder roher Ordner?] (http://stackoverflow.com/questions/3028717/how-to-play-videos-in-android-from-assets-folder-orraw-folder) – Jason
@Jason Nicht relevant Ich habe Angst . Ich fürchte, das ist mehr ein Xamarin-Problem als alles andere. Die Datei wird gefunden, wenn ich andere Methoden als VideoView sicher verwende. – Ruddy