简体   繁体   English

无法使用Xam.Plugin.Media插件

[英]Can't use Xam.Plugin.Media plugin

I have android application that is built using Xamarin Forms. 我有使用Xamarin Forms构建的android应用程序。 In order to use camera of the mobile, I install Xam.Plugin.Media plugin and follow exactly the instructions of this video . 为了使用手机的摄像头,我安装了Xam.Plugin.Media插件,并严格按照此视频的说明进行操作。

This is my code: 这是我的代码:

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;
            });
        }

However, when executing this code: 但是,执行此代码时:

        var file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
        {
            Directory = "Sample",
            Name = "test.jpg"
        });

I get this error: 我收到此错误:

{Java.Lang.ClassNotFoundException: md55b01af31820394fbfb172542d1258596.MediaPickerActivity ---> Java.Lang.ClassNotFoundException: Didn't find class "md55b01af31820394fbfb172542d1258596.MediaPickerActivity" on path: DexPathList[[zip file "/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]] --- End of inner exception stack trace --- 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 {Java.Lang.ClassNotFoundException:md55b01af31820394fbfb172542d1258596.MediaPickerActivity ---> Java.Lang.ClassNotFoundException:在路径:DexPathList [[zip.com/data/app/app。 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]在<657aa8fea4454dc898a9e5f379c58734>:0在Java.Interop中.JniEnvironment +静态方法。 jclass,System.IntPtr jmethod,Android.Runtime.JValue * parms)[0x0000e]在 :0 at Android.Runtime.JNIEnv.CallStaticObjectMethod (System.IntPtr jclass, System.IntPtr jmethod, Android.Runtime.JValue[] parms) [0x00017] in :0 at Android.Runtime.JNIEnv.FindClass (System.String classname) [0x0003d] in :0 at Android.Runtime.JNIEnv.FindClass (System.Type type) [0x00084] in :0 at Java.Lang.Class.FromType (System.Type type) [0x00022] in :0 在Android.Runtime.JNIEnv.FindClass(System.String类名)中的:0中的Android.Runtime.JNIEnv.CallStaticObjectMethod(System.IntPtr jclass,System.IntPtr jmethod,Android.Runtime.JValue [] parms)[0x00017] [0x0003d]在Android.Runtime.JNIEnv.FindClass(System.Type类型)的:0中[0x00084]在Java.Lang.Class.FromType(System.Type类型)的:0处[0x00022]在0的情况
at Android.Content.Intent..ctor (Android.Content.Context packageContext, System.Type type) [0x00000] in :0 at Plugin.Media.MediaImplementation.CreateMediaIntent (System.Int32 id, System.String type, System.String action, Plugin.Media.Abstractions.StoreMediaOptions options, System.Boolean tasked) [0x00000] in C:\\projects\\mediaplugin\\src\\Media.Plugin.Android\\MediaImplementation.cs:411 at Plugin.Media.MediaImplementation.TakeMediaAsync (System.String type, System.String action, 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] in C:\\projects\\mediaplugin\\src\\Media.Plugin.Android\\MediaImplementation.cs:153 在Android.Content.Intent..ctor(Android.Content.Context packageContext,System.Type类型)处[0x00000]在plugin.Media.MediaImplementation.CreateMediaIntent(System.Int32 id,System.String type,System.String动作,Plugin.Media.Abstractions.StoreMediaOptions选项,System.Boolean任务)在C:\\ projects \\ mediaplugin \\ src \\ Media.Plugin.Android \\ MediaImplementation.cs:411中位于Plugin.Media.MediaImplementation.TakeMediaAsync(系统.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中

--- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () [0x0000c] in <657aa8fea4454dc898a9e5f379c58734>:0 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (System.Threading.Tasks.Task task) [0x0003e] in <657aa8fea4454dc898a9e5f379c58734>:0 at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (System.Threading.Tasks.Task task) [0x00028] in <657aa8fea4454dc898a9e5f379c58734>:0 at System.Runtime.CompilerServices.TaskAwaiter.ValidateEnd (System.Threading.Tasks.Task task) [0x00008] in <657aa8fea4454dc898a9e5f379c58734>:0 at System.Runtime.CompilerServices.TaskAwaiter`1[TResult].GetResult () [0x00000] in <657aa8fea4454dc898a9e5f379c58734>:0 at EClinicForDoctor.Pages.VisitsPage+d__17.MoveNext () [0x00175] in E:\\Doctor Project\\Mobile Applications\\v1\\4\\EClinicForDoctor\\EClinicForDoctor\\EClinicForDoctor\\Pages\\VisitsPage.xaml.cs:235 --- End of managed Java.Lan ---从之前引发异常的位置开始的堆栈跟踪---在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()[0x0000c]在<657aa8fea4454dc898a9e5f379c58734>:0中的位置.Threading.Tasks.Task任务)[0x0003e]在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task任务)的<657aa8fea4454dc898a9e5f379c58734>:0中[0x0003e]在<657aa8fea4f>的System.Threading.Tasks.Task任务[0x00028] <657aa8fea4454dc898a9e5f379c58734>:0中的.CompilerServices.TaskAwaiter.ValidateEnd(System.Threading.Tasks.Task任务)[0x00008]在System.Runtime.CompilerServices.TaskAwaiter`1 [TResult] .GetResult()[0x00000]在<657aa8fea4>中的DC898c:f位于E:\\ Doctor Project \\ Mobile Applications \\ v1 \\ 4 \\ EClinicForDoctor \\ EClinicForDoctor \\ EClinicForDoctor \\ Pages \\ VisitsPage.xaml.cs:235的EClinicForDoctor.Pages.VisitsPage + d__17.MoveNext()[0x00175]托管Java.Lan g.ClassNotFoundException stack trace --- 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 Method) at md5270abb39e60627f0f200893b490a1ade.ButtonRenderer_ButtonClickListener.onClick(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.ma g.ClassNotFoundException堆栈跟踪--java.lang.ClassNotFoundException:md55b01af31820394fbfb172542d1258596.MediaPickerActivity at java.lang.Class.classForName(Native Method)at java.lang.Class.forName(Class.java:324)at md5270abb39e60627f0f200893b490aonClick。 (本机方法),位于md5270abb39e60627f0f200893b490a1ade.ButtonRenderer_ButtonClickListener.onClick(ButtonRenderer_ButtonClickListener.java:30),位于android.view.View.performClick(View.java:5697),位于android.widget.TextView.performClick(TextView.java:10826)。 android.os.Handler.dispatchMessage(Handler.java:95)的android.os.Handler.handleCallback(Handler.java:739)的view.View $ PerformClick.run(View.java:22526)android.os.Looper的android.os.Handler.dispatchMessage(Handler.java:95) .loop(Looper.java:158)at android.app.ActivityThread.main(ActivityThread.java:7225)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller的java.lang.reflect.Method.invoke(本机方法) .run(ZygoteInit.java:1230)在com.android.internal.os.ZygoteInit.ma in(ZygoteInit.java:1120) Caused by: java.lang.ClassNotFoundException: Didn't find class "md55b01af31820394fbfb172542d1258596.MediaPickerActivity" on path: DexPathList[[zip file "/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]] 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 more Suppressed: 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 more Caused by: java.lang.NoClassDefFoundError: Clas in(ZygoteInit.java:1120)原因:java.lang.ClassNotFoundException:在路径:DexPathList [[zip文件“ /data/app/com.companyname.EClinicForDoctor-1/base”中找不到类“ md55b01af31820394fbfb172542d1258596.MediaPickerActivity” .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.ClassLoader.loadClass(ClassLoader.java:504)处的.lang.BootClassLoader.loadClass(ClassLoader.java:841)... 15更多原因:java.lang.NoClassDefFoundError:Clas s not found using the boot class loader; 使用引导类加载器找不到; no stack trace available } 没有可用的堆栈跟踪}

Then I read the instructions of the plugin from github which it was somehow similar to the instructions of the video and the same error occur. 然后我从github上阅读了插件的说明,它在某种程度上类似于视频的说明,并且发生了相同的错误。 How can solve this problem? 如何解决这个问题?

Try to delete the bin obj folder of your project. 尝试删除项目的bin obj文件夹。

Your compile code and NuGet sits in obj, bin folder. 您的编译代码和NuGet位于obj,bin文件夹中。 Sometimes when you add any new NuGet it doesn't go in obj, bin folder. 有时,当您添加任何新的NuGet时,它不会进入obj,bin文件夹中。 It only use earlier compiled NuGet as cache from bin and obj. 它仅使用较早编译的NuGet作为bin和obj的缓存。 Deleting all bin, obj force compiler to create new bin obj folder and recompile the solution. 删除所有bin,obj强制编译器创建新的bin obj文件夹并重新编译解决方案。 It is better idea to delete bin, obj whenever you add any new NuGet in solution. 最好在解决方案中添加任何新的NuGet时删除bin,obj。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何使用 Xam.Plugin.Media 从图片库中添加照片? - How to add photo from gallery in Image with Xam.Plugin.Media? 尝试使用Xam.Plugin.Media打开相机时抛出异常 - Exception throw out when trying to open the camera using Xam.Plugin.Media Xam.Plugin.Media的方法“ TakePhotoAsync”在Xamarin.Forms的平台WinPhone上返回null - Method “TakePhotoAsync” of Xam.Plugin.Media return null on platform WinPhone in Xamarin.Forms Xamarin Forms 和 xam.plugin.media:无法解析对 Xamarin.Essentials.Permissions 的引用 - Xamarin Forms and xam.plugin.media: could not resolve reference to Xamarin.Essentials.Permissions 使用xam.plugin.media将映像上传到服务器(后端)时收到错误请求 - Am getting Bad Request while uploading an Image to the server (backend) , am using xam.plugin.media 将来自 Xam.Plugin.Media 5.0.1 的 imageSource 转换为 Xamarinforms 中的字节数组? - Convert imageSource coming from Xam.Plugin.Media 5.0.1 to byte array in Xamarinforms? 使用 Xam.Plugin.Media 拍摄和存储用户照片的强制性要求 - Compulsary requirement to take and store users photo using Xam.Plugin.Media 我可以在平台 WPF 中使用 Xam.Plugin.Forms.ImageCircle - Can I use Xam.Plugin.Forms.ImageCircle in platform WPF 如何在xam.plugin.settings中存储整数值? - How can I store integer values in xam.plugin.settings? 注册xam.plugin.pushnotification时出错 - Error when register xam.plugin.pushnotification
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM