无法使用 Xam.Plugin.Media 插件



我有使用Xamarin Forms构建的Android应用程序。为了使用手机的相机,我安装了Xam.Plugin.Media插件,并完全按照此视频的说明进行操作。

这是我的代码:

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: Not find class "md55b01af31820394fbfb172542d1258596。MediaPickerActivity"在路径上: DexPathList[[zip file "/data/app/com.companyname.EClinicForDoctor-1/base.apk"],nativeLibraryDirectory=[/data/app/com.companyname.EClinicForDoctor-1/lib/arm,/data/app/com.companyname.EClinicForDoctor-1/base.apk!/lib/armeabi-v7a,/vendor/lib,/system/lib]] --- 内部异常堆栈跟踪结束 --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <657aa8fea4454dc898a9e5f379c58734>:0 at Java.Interop.JniEnvironment+StaticMethods.CallStaticObjectMethod (Java.Interop.JniObjectReference type, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args) [0x00069] in <54816278eed9488eb28d3597fecd78f8>:0 at 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 classname) [0x0003d] 在 :0 在 Android.Runtime.JNIEnv.FindClass (System.Type type) [0x00084] in :0 at Java.Lang.Class.FromType (系统类型)[0x00022] in :0
at Android.Content.Intent..ctor (Android.Content.Context packageContext, System.Type type) [0x00000] in :0 在 Plugin.Media.MediaImplementation.CreateMediaIntent (System.Int32 id, 系统字符串类型, 系统字符串操作, Plugin.Media.Abstractions.StoreMediaOptions options, System.Boolean 任务) [0x00000] 在 C:\projects\mediaplugin\src\Media.Plugin.Android\MediaImplementation.cs:411 at Plugin.Media.MediaImplementation.TakeMediaAsync (System.String 类型, 系统字符串操作, Plugin.Media.Abstractions.StoreMediaOptions options) [0x00044] in C:\projects\mediaplugin\src\Media.Plugin.Android\MediaImplementation.cs:470 at Plugin.Media.MediaImplementation+d__17.MoveNext () [0x000ab] 在 C:\projects\mediaplugin\src\Media.Plugin.Android\MediaImplementation.cs:153

--- 从引发异常的先前位置的堆栈跟踪结束 --- System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] 在 <657aa8fea4454dc898a9e5f379c5873>4 中 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task)[0x0003e] 在 <657aa8fea4454dc898a9e5f379c58734>:0 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task)[0x00028] 在 <657aa8fea4454dc898a9e5f379c58734>:0 at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task)[0x00008] 在 <657aa8fea4454dc898a9e5f379c58734>:0 at System.Runtime.CompilerServices.TaskAwaiter'1[TResult].获取结果 () [0x00000] 在 <657aa8fea4454dc898a9e5f379c5873>4 中 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 at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:324) at md5270abb39e60627f0f200893b490a1ade.ButtonRenderer_ButtonClickListener.n_onClick(Native 方法)在 md5270abb39e60627f0f200893b490a1ade.ButtonRenderer_ButtonClickListener.点击(ButtonRenderer_ButtonClickListener.java:30) at android.view.View.performClick(View.java:5697) at android.widget.TextView.performClick(TextView.java:10826) at android.view.View$PerformClick.run(View.java:22526) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:158) at android.app.ActivityThread.main(ActivityThread.java:7225) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 原因:java.lang.ClassNotFoundException:未找到类 "md55b01af31820394fbfb172542d1258596。MediaPickerActivity"在路径上: DexPathList[[zip file "/data/app/com.companyname.EClinicForDoctor-1/base.apk"],nativeLibraryDirectory=[/data/app/com.companyname.EClinicForDoctor-1/lib/arm,/data/app/com.companyname.EClinicForDoctor-1/base.apk!/lib/armeabi-v7a,/vendor/lib,/system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:511) at java.lang.ClassLoader.loadClass(ClassLoader.java:469) ...还有 14 个 抑制:java.lang.ClassNotFoundException: md55b01af31820394fbfb172542d1258596.MediaPickerActivity at java.lang.Class.classForName(Native Method) at java.lang.BootClassLoader.findClass(ClassLoader.java:781) at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) at java.lang.ClassLoader.loadClass(ClassLoader.java:504) ...15 更多 由以下原因引起:java.lang.NoClassDefFoundError:使用 引导类加载器;没有可用的堆栈跟踪 }

然后我从 github 阅读了插件的说明,它在某种程度上类似于视频的说明,并且发生了相同的错误。如何解决这个问题?

尝试删除项目的 bin obj 文件夹。

编译代码和 NuGet 位于 obj、bin 文件夹中。有时,当您添加任何新的NuGet时,它不会进入obj,bin文件夹。它仅使用早期编译的 NuGet 作为来自 bin 和 obj 的缓存。删除所有 bin 时,obj 强制编译器创建新的 bin obj 文件夹并重新编译解决方案。最好在解决方案中添加任何新的NuGet时删除bin,obj。

最新更新