簡體   English   中英

無法使用Xam.Plugin.Media插件

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

我有使用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:在路徑: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]在 在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的情況
在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中

---從之前引發異常的位置開始的堆棧跟蹤---在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堆棧跟蹤--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)原因: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 使用引導類加載器找不到; 沒有可用的堆棧跟蹤}

然后我從github上閱讀了插件的說明,它在某種程度上類似於視頻的說明,並且發生了相同的錯誤。 如何解決這個問題?

嘗試刪除項目的bin obj文件夾。

您的編譯代碼和NuGet位於obj,bin文件夾中。 有時,當您添加任何新的NuGet時,它不會進入obj,bin文件夾中。 它僅使用較早編譯的NuGet作為bin和obj的緩存。 刪除所有bin,obj強制編譯器創建新的bin obj文件夾並重新編譯解決方案。 最好在解決方案中添加任何新的NuGet時刪除bin,obj。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM