【发布时间】:2018-06-20 16:54:37
【问题描述】:
我有使用 Xamarin Forms 构建的 android 应用程序。为了使用手机的摄像头,我安装了 Xam.Plugin.Media 插件并完全按照this video的说明进行操作。
这是我的代码:
public async void TakePhotoAsAttachment(object sender, EventArgs e)
{
await CrossMedia.Current.Initialize();
if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported)
{
await DisplayAlert("No Camera", ":( No camera available.", "OK");
return;
}
var file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
{
Directory = "Sample",
Name = "test.jpg"
});
if (file == null)
return;
await DisplayAlert("File Location", file.Path, "OK");
image.Source = ImageSource.FromStream(() =>
{
var stream = file.GetStream();
return stream;
});
}
但是,在执行此代码时:
var file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
{
Directory = "Sample",
Name = "test.jpg"
});
我收到此错误:
{Java.Lang.ClassNotFoundException: md55b01af31820394fbfb172542d1258596.MediaPickerActivity ---> Java.Lang.ClassNotFoundException:找不到类 路径上的“md55b01af31820394fbfb172542d1258596.MediaPickerActivity”: DexPathList[[压缩文件 "/data/app/com.companyname.EClinicForDoctor-1/base.apk"],nativeLibraryDirectories=[/data/app/com.companyname.EClinicForDoctor-1/lib/arm, /data/app/com.companyname.EClinicForDoctor-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]] --- 内部异常堆栈跟踪结束 --- 在 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] 在 :0 处 Java.Interop.JniEnvironment+StaticMethods.CallStaticObjectMethod (Java.Interop.JniObjectReference 类型,Java.Interop.JniMethodInfo 方法,Java.Interop.JniArgumentValue* args) [0x00069] in :0 在 Android.Runtime.JNIEnv.CallStaticObjectMethod (System.IntPtr jclass, System.IntPtr jmethod, Android.Runtime.JValue* parms) [0x0000e] in :0 在 Android.Runtime.JNIEnv.CallStaticObjectMethod (System.IntPtr jclass, System.IntPtr jmethod, Android.Runtime.JValue[] parms) [0x00017] in :0 在 Android.Runtime.JNIEnv.FindClass (System.String 类名) [0x0003d] 在 :0 在 Android.Runtime.JNIEnv.FindClass (System.Type 类型) [0x00084] in :0 在 Java.Lang.Class.FromType (System.Type 类型) [0x00022] in :0
在 Android.Content.Intent..ctor (Android.Content.Context packageContext,System.Type 类型)[0x00000] in :0 在 Plugin.Media.MediaImplementation.CreateMediaIntent (System.Int32 id, System.String 类型,System.String 动作, Plugin.Media.Abstractions.StoreMediaOptions 选项,System.Boolean 任务)[0x00000] 在 C:\projects\mediaplugin\src\Media.Plugin.Android\MediaImplementation.cs:411 在 Plugin.Media.MediaImplementation.TakeMediaAsync (System.String 类型,System.String 动作, Plugin.Media.Abstractions.StoreMediaOptions 选项)[0x00044] 在 C:\projects\mediaplugin\src\Media.Plugin.Android\MediaImplementation.cs:470 在 Plugin.Media.MediaImplementation+d__17.MoveNext () [0x000ab] 在 C:\projects\mediaplugin\src\Media.Plugin.Android\MediaImplementation.cs:153--- 从先前抛出异常的位置结束堆栈跟踪--- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] 在 :0 处 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task 任务) [0x0003e] in :0 在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task 任务) [0x00028] in :0 在 System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task 任务) [0x00008] in :0 在 System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () [0x00000] 在 :0 处 EClinicForDoctor.Pages.VisitsPage+d__17.MoveNext () [0x00175] 在 E:\Doctor Project\Mobile Applications\v1\4\EClinicForDoctor\EClinicForDoctor\EClinicForDoctor\Pages\VisitsPage.xaml.cs:235 --- 托管 Java.Lang.ClassNotFoundException 堆栈跟踪结束 --- java.lang.ClassNotFoundException: md55b01af31820394fbfb172542d1258596.MediaPickerActivity 在 java.lang.Class.classForName(Native Method) 在 java.lang.Class.forName(Class.java:324) 在 md5270abb39e60627f0f200893b490a1ade.ButtonRenderer_ButtonClickListener.n_onClick(Native 方法)在 md5270abb39e60627f0f200893b490a1ade.ButtonRenderer_ButtonClickListener.onClick(ButtonRenderer_ButtonClickListener.java:30) 在 android.view.View.performClick(View.java:5697) 在 android.widget.TextView.performClick(TextView.java:10826) 在 android.view.View$PerformClick.run(View.java:22526) 在 android.os.Handler.handleCallback(Handler.java:739) 在 android.os.Handler.dispatchMessage(Handler.java:95) 在 android.os.Looper.loop(Looper.java:158) 在 android.app.ActivityThread.main(ActivityThread.java:7225) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 引起:java.lang.ClassNotFoundException:找不到类 路径上的“md55b01af31820394fbfb172542d1258596.MediaPickerActivity”: DexPathList[[压缩文件 "/data/app/com.companyname.EClinicForDoctor-1/base.apk"],nativeLibraryDirectories=[/data/app/com.companyname.EClinicForDoctor-1/lib/arm, /data/app/com.companyname.EClinicForDoctor-1/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]] 在 dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:511) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:469) ... 14 更多 抑制:java.lang.ClassNotFoundException: md55b01af31820394fbfb172542d1258596.MediaPickerActivity 在 java.lang.Class.classForName(Native Method) 在 java.lang.BootClassLoader.findClass(ClassLoader.java:781) 在 java.lang.BootClassLoader.loadClass(ClassLoader.java:841) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:504) ... 15 更多 引起:java.lang.NoClassDefFoundError: Class not found using the 引导类加载器;没有可用的堆栈跟踪 }
然后我从github 阅读了插件的说明,它在某种程度上类似于视频的说明,并且发生了同样的错误。如何解决这个问题?
【问题讨论】:
-
在 iOS 上运行正常吗?
-
我只在 Android 上运行它。我没有 MAC 电脑。
-
你在便携版和安卓版都安装了插件吗?也尝试删除每个项目的bin obj文件夹
-
谢谢兄弟。它在删除 bin 和 obj 文件夹后工作。写下您的评论作为答案,以使其成为现实。但是你能告诉我为什么会这样吗??
标签: c# xamarin.forms