shalom
shalom

Reputation: 351

Unable to instantiate activity ComponentInfo using .Net Maui Blazor in Android TV

I'm working on app for Android TV using .NET MAUI Blazor. I use "Android 11 Google TV API 30" as test platform. In debug mode there is no problem at first. I can close, then I can again open it. But the application is not visible on menu. So I added some settings(application tag) to AndroidManifest.xml to get app menu button on navigation:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
    <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/appicon_round" android:supportsRtl="true"></application>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />

    <uses-feature
    android:name="android.hardware.touchscreen"
    android:required="false" />

    <uses-feature android:name="android.software.leanback"
        android:required="true" />


    <application android:label="MyApplication" android:icon="@mipmap/ic_launcher" android:debuggable="true">
        <uses-library android:name="com.google.android.tv" android:required="false" />
        <activity android:name="com.companyname.testapp.MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
                <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

After that changes, I cannot open the application. The error I got from logcat when I tried to open application:

FATAL EXCEPTION: main
    Process: com.companyname.testapp, PID: 6420
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.companyname.testapp/com.companyname.testapp.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.companyname.testapp.MainActivity" on path: DexPathList[[zip file "/data/app/~~djgnsq_EYso1EzHpEhJvmQ==/com.companyname.testapp-cO94JzO_-athr_769KS_eQ==/base.apk"],nativeLibraryDirectories=[/data/app/~~djgnsq_EYso1EzHpEhJvmQ==/com.companyname.testapp-cO94JzO_-athr_769KS_eQ==/lib/x86, /data/app/~~djgnsq_EYso1EzHpEhJvmQ==/com.companyname.testapp-cO94JzO_-athr_769KS_eQ==/base.apk!/lib/x86, /system/lib, /system_ext/lib]]
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3365)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        at android.os.Looper.loop(Looper.java:223)
        at android.app.ActivityThread.main(ActivityThread.java:7656)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
    Caused by: java.lang.ClassNotFoundException: Didn't find class "com.companyname.testapp.MainActivity" on path: DexPathList[[zip file "/data/app/~~djgnsq_EYso1EzHpEhJvmQ==/com.companyname.testapp-cO94JzO_-athr_769KS_eQ==/base.apk"],nativeLibraryDirectories=[/data/app/~~djgnsq_EYso1EzHpEhJvmQ==/com.companyname.testapp-cO94JzO_-athr_769KS_eQ==/lib/x86, /data/app/~~djgnsq_EYso1EzHpEhJvmQ==/com.companyname.testapp-cO94JzO_-athr_769KS_eQ==/base.apk!/lib/x86, /system/lib, /system_ext/lib]]
        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:207)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
        at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95)
        at android.app.Instrumentation.newActivity(Instrumentation.java:1253)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3353)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3601) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2066) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        at android.os.Looper.loop(Looper.java:223) 
        at android.app.ActivityThread.main(ActivityThread.java:7656) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947) 

In addition, mainactivity.cs:

using Android.App;
using Android.Content.PM;
using Android.OS;

namespace TestApp;

[Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
public class MainActivity : MauiAppCompatActivity
{
}

I have no idea what should I do.

Upvotes: 0

Views: 643

Answers (1)

shalom
shalom

Reputation: 351

I solved my problem finally. Just define name of the Activity class like in below:

[Activity(Name="com.companyname.testapp.MainActivity", Theme = "@style/Maui.SplashTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
public class MainActivity : MauiAppCompatActivity
{
}

AndroidManifest.xml:

<application
        android:label="TestApp"
        ...>

        <activity
            android:name="com.companyname.testapp.MainActivity"
            ...>
            <intent-filter>
                ...
            </intent-filter>
        </activity>
    </application>

For more information take look at documentation.

Upvotes: 1

Related Questions