2016-11-11 98 views
2

我使用Xamarin Android为我的应用程序。一切工作正常,但有一个设备(三​​星片剂 - 便签10(ME302C)(ME302C))当我调用应用崩溃: Application.Context.GetExternalFilesDirs没有名称的方法getExternalFilesDirs - 三星平板电脑

没有任何人有一个想法是什么可能导致此错误在那个设备上?

这里的堆栈跟踪:

java.lang.RuntimeException: java.lang.reflect.InvocationTargetException 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
    at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.reflect.InvocationTargetException 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:525) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:744) 
    ... 2 more 
Caused by: android.runtime.JavaProxyThrowable: System.TypeInitializationException: The type initializer for 'Newsapp.Helper.Cache' threw an exception. ---> Java.Lang.LinkageError: no method with name='getExternalFilesDirs' signature='(Ljava/lang/String;)[Ljava/io/File;' in class Landroid/content/ContextWrapper; 
    at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() [0x0000c] in <7f3c44ba97304b1facc5fab710fb48ee>:0 
    at Java.Interop.JniEnvironment+InstanceMethods.GetMethodID (Java.Interop.JniObjectReference type, System.String name, System.String signature) [0x00068] in <94c0df7d96c545139eb80ed7e7971cad>:0 
    at Java.Interop.JniType.GetInstanceMethod (System.String name, System.String signature) [0x0000d] in <94c0df7d96c545139eb80ed7e7971cad>:0 
    at Java.Interop.JniPeerMembers+JniInstanceMethods.GetMethodInfo (System.String encodedMember) [0x00037] in <94c0df7d96c545139eb80ed7e7971cad>:0 
    at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeVirtualObjectMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) [0x00021] in <94c0df7d96c545139eb80ed7e7971cad>:0 
    at Android.Content.ContextWrapper.GetExternalFilesDirs (System.String type) [0x00028] in <9034fa2a7b2d4af58a5795347dea0c6c>:0 
    at Newsapp.Helper.Cache..cctor() [0x00005] in <3c67df7fed2f4d7f93c20a8efe706c9d>:0 
--- End of inner exception stack trace --- 
    at Newsapp.MainActivity.OnResume() [0x00006] in <3c67df7fed2f4d7f93c20a8efe706c9d>:0 
    at Android.App.Activity.n_OnResume (System.IntPtr jnienv, System.IntPtr native__this) [0x00009] in <9034fa2a7b2d4af58a5795347dea0c6c>:0 
    at (wrapper dynamic-method) System.Object:c38d2a60-2f2e-4588-9b3e-9c0127e13614 (intptr,intptr) 
    at md5f618e11941113618e86cea743c542a49.MainActivity.n_onResume(Native Method) 
    at md5f618e11941113618e86cea743c542a49.MainActivity.onResume(MainActivity.java:34) 
    at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1192) 
    at android.app.Activity.performResume(Activity.java:5211) 
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2819) 
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2858) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2305) 
    at android.app.ActivityThread.access$600(ActivityThread.java:144) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1295) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:150) 
    at android.app.ActivityThread.main(ActivityThread.java:5162) 
    ... 5 more 

回答

3

看起来你是在此设备上运行的豆形软糖。

  if (Android.OS.Build.VERSION.SdkInt <= BuildVersionCodes.JellyBeanMr2) 
      { 
       var files = Application.Context.GetExternalFilesDir(null); 
      } 
      else // for kitkat and above 
      { 
       var files = Application.Context.GetExternalFilesDirs(null); 
      } 
+0

谢谢,它现在可行! – user1519979