Reputation: 351
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
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