Xamarin.Android java.lang.ClassNotFoundException [英] Xamarin.Android java.lang.ClassNotFoundException
问题描述
我正在尝试使用Intent和Action.Send从外部应用程序接收文件.我在选择器列表中选择了我的应用,然后尝试启动的应用却崩溃了:
I'm trying to receive files from external apps using Intent and Action.Send. I chose my app at chooser list and then app trying to start but it crashes:
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)在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2115) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2248) 在android.app.ActivityThread.access $ 800(ActivityThread.java:138)处 android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1199) 在android.os.Handler.dispatchMessage(Handler.java:102)处 android.os.Looper.loop(Looper.java:136)在 android.app.ActivityThread.main(ActivityThread.java:5054)位于 java.lang.reflect.Method.invokeNative(本机方法)位于 java.lang.reflect.Method.invoke(Method.java:515)在 com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:788) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:604)处 dalvik.system.NativeStart.main(本机方法)
java.lang.ClassNotFoundException: Didn't find class "net.inlu.Incrypta.MainActivity" on path: DexPathList[[zip file "/data/app/net.inlu.Incrypta-1.apk"],nativeLibraryDirectories=[/data/app-lib/net.inlu.Incrypta-1, /vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:497) at java.lang.ClassLoader.loadClass(ClassLoader.java:457) at 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) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:604) at dalvik.system.NativeStart.main(Native Method)
我的清单文件:
<?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的确切支持.可能有人知道如何解决它.
I've seen a lot of such issues for Android, but didn't find anuthing exactly for Xamarin.Android. May be anyone knows how to fix it.
MainActivity:
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));
}
}
}
}
推荐答案
尝试显式更改MainActivity
的ACW(Android可调用包装器)名称.这可以通过多种方法完成,但是最简单的方法是使用[Activity]
属性中的Name
属性指定名称.然后,您可以将该名称设置为要查找的名称.
Try to explicitly change the ACW(Android Callable Wrapper) name of your MainActivity
. This can be done multiple ways, but the easiest way would be to use the Name
property inside the [Activity]
attribute to specify a name. You would then set that name to the name it's looking for.
即
[Activity(Name="net.inlu.incrypta.MainActivity")]
注意:请确保您的名称空间遵循Java约定,这是完全限定的名称.
Note: Ensure your namespace follows Java conventions in the sense of a fully qualified name.
EX: com.my.package.ClassName
EX: com.my.package.ClassName
这篇关于Xamarin.Android java.lang.ClassNotFoundException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!