【问题标题】:Xamarin.Android: Unable to instantiate activity ComponentInfoXamarin.Android:无法实例化活动 ComponentInfo
【发布时间】:2018-04-20 04:16:02
【问题描述】:

我在尝试从文本消息 URL 启动 Android 上的 Xamarin 表单应用程序时收到此错误。我一直按照THIS 文章中提到的步骤进行操作。

这里是我的 AppManifest.xml 中的应用程序节点

<application android:label="Label A">
  <activity android:icon="@drawable/Icon" android:label="LabelB" android:name=".MainActivity">
    <intent-filter>
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE" />
      <data android:scheme="superduperapp" />
    </intent-filter>
  </activity>
</application>

根据文章,我需要对意图对象执行某些操作以触发 OnCreate 覆盖,但我认为我的清单和我在下面创建的类的命名约定不匹配。

[Activity(Label = "urlentryclass")]
public class OpenFromURI : Activity
{
    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);

        Intent outsideIntent = Intent;
        var x = Intent.Data.EncodedAuthority;
    }
}

因此,将上述代码添加到我的 xamarin 解决方案后,我还有一个网页,其中包含以下代码..

&lt;a href="superduperapp://QueryStringParamsGoHere"&gt;&lt;/a&gt;

当我从我的移动浏览器点击上面的链接时,它会触及移动应用程序,因为我收到下面的错误

MyApp.Mobile.Droid.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "MyApp.Mobile.Droid.MainActivity" on path: DexPathList[[zip file "/data/app/MyApp.Mobile.Droid-1/base.apk"],nativeLibraryDirectories=[/data/app/MyApp.Mobile.Droid-1/lib/arm64, /data/app/MyApp.Mobile.Droid-1/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]] occurred

【问题讨论】:

    标签: xamarin xamarin.android android-manifest applinks


    【解决方案1】:

    MyApp.Mobile.Droid.MainActivity}:java.lang.ClassNotFoundException:找不到类“MyApp.Mobile.Droid.MainActivity”

    Xamarin.Android,默认情况下,使用基于 MD5 的类名生成 Java 包装器,以避免 Java 类名冲突,例如:

    md579731053346ff64fcf21847b09163ce1.MainActivity 
    

    您已在清单中硬编码了 android:name=".MainActivity",但默认情况下生成的类将基于 MD5。

    打开您的MainActivity 并在MainActvity 类的ActivityAttribute 中,在该属性的Name 参数中添加一个完全限定名称,这将强制@987654328 @ 构建过程使用您选择的 Java 类名称与基于 MD5 的名称,因此它将与您的清单条目匹配。

    示例:

    [Activity(Name = "MyApp.Mobile.Droid.MainActivity", Label = "MySuperDuperApp", MainLauncher = true, Icon = "@mipmap/icon")]
    public class MainActivity : Activity
    {
       ~~~
    

    【讨论】:

    • 谢谢寿司,我需要了解这一点。它现在正在运行,感谢您的帮助!
    • @Chucky 针对您遇到的问题发布一个新问题
    猜你喜欢
    • 2011-11-19
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多