2016-06-21 61 views
3

我试图从外部应用程序使用Intent和Action.Send接收文件。我选择我的应用程序在选择器列表,然后应用程序试图启动,但它崩溃:Xamarin.Android java.lang.ClassNotFoundException

抛出java.lang.ClassNotFoundException:找不到类的路径 “net.inlu.Incrypta.MainActivity”:DexPathList [ zip文件 “/data/app/net.inlu.Incrypta-1.apk"],nativeLibraryDirectories=[/data/app-lib/net.inlu.Incrypta-1, /vendor/lib,/ system/lib] ]在 dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 在java.lang.ClassLoader.loadClass(ClassLoader.java:497)在 java.lang.ClassLoader.loadClass(ClassLoader.java:457)在 android.app.Instrumentation.newActivity(Instrumentation.java:1084)at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2115) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2248) at android.app.ActivityThread.access $ 800(ActivityThread.java:138)at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1199) at android.os.Handler.dispatchMessage(Handler.java:102)at android.os.Looper.loop(Looper.java:136)at android.app.ActivityThread.main(ActivityThread.java:5054)at java.lang.reflect.Method.invokeNative(Native Method)at java.lang.reflect.Method.invoke(Method.java:515)at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:788) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:604)在 dalvik.system.NativeStart.main(本机方法)

我的清单文件:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="6" android:versionName="1.0.1" package="net.inlu.Incrypta" android:installLocation="auto"> 
    <uses-sdk android:minSdkVersion="19" /> 
    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> 
    <application android:allowBackup="true" android:label="@string/app_name" android:logo="@drawable/Logo" android:theme="@style/StartTheme" android:windowSoftInputMode="stateVisible|adjustPan" android:icon="@drawable/Logo"> 
     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.SEND" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
       <data android:mimeType="*/*" /> 
      </intent-filter> 
      <intent-filter> 
       <action android:name="android.intent.action.SEND_MULTIPLE" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
       <data android:mimeType="*/*" /> 
      </intent-filter> 
     </activity> 
    </application> 
</manifest> 

我已经看到了很多Android的这些问题,但没有找到准确的Xamarin.Android。可能有人知道如何解决它。

MainActivity:

namespace Android.App 
{ 
    [Activity (MainLauncher = true, Icon = "@drawable/Logo", NoHistory = true)] 
    public class MainActivity : Activity 
    { 
     protected override async void OnCreate (Bundle savedInstanceState) 
     { 
      BootStrapper.RegisterDependencies(new IoCModule()); 

      Intent intent = Intent; 
      string action = intent.Action; 
      string type = intent.Type; 

      //Xamarin.Insights.Initialize (XamarinInsights.ApiKey, this); 
      base.OnCreate (savedInstanceState); 
      //SetContentView(Resource.Layout.splash); 
      try 
      { 
       var srv= BootStrapper.Container.Resolve<IServiceManager>(); 
       var credentials = await srv.ConnectAsync(); 
       StartActivity(credentials != null ? typeof(BaseActivity) : typeof(LoginActivity)); 
      } 
      catch (Exception) 
      { 
       StartActivity(typeof(LoginActivity)); 
      } 
     } 
    } 
} 
+0

请出示你的'.BaseActivity'类的代码 - 投诉/错误是,这个类是找不到的。 – ishmaelMakitla

+0

@ishmaelMakitla,添加 –

+0

您是否已将[Activity]属性附加到您的“BaseActivity”中? –

回答

2

尽量明确地改变你的MainActivity的ACW(Android的可调用包装)的名字。这可以通过多种方式完成,但最简单的方法是使用[Activity]属性内的Name属性指定名称。然后,您将该名称设置为它正在查找的名称。

[Activity(Name="net.inlu.incrypta.MainActivity")] 

注:确保您的命名遵循Java规范的全名的意义。

EX: com.my.package.ClassName

https://developer.xamarin.com/releases/android/xamarin.android_5/xamarin.android_5.1/#Android_Callable_Wrapper_Naming

+0

是的!它的工作原理,非常感谢! –

+0

快乐编码! –

+0

@JonDouglas我有同样的问题。我正在使用调用StartActivity(typeof(MainActivity))的SplashActivity;我有这个ClassNotFoundException MainActivity ...可能是什么? –

相关问题