java.lang.ClassNotFoundException: Didn't find class "com.company.myapp.BootReceiver"

Vuyiswa Maseko 351 Reputation points
2022-02-14T16:00:24.467+00:00

Good Day All

i have a foreground Service that is supposed to start when the device is restarted or shutdown and started , but in some devices it does not start , AppCentre report the following

java.lang.ClassNotFoundException: Didn't find class "com.company.myapp.BootReceiver" on path: DexPathList[[zip file "/data/app/com.company.myapp-1/base.apk", zip file "/data/app/com.company.myapp-1/split_config.armeabi_v7a.apk", zip file "/data/app/com.company.myapp-1/split_config.hdpi.apk", zip file "/data/app/com.company.myapp-1/split_config.kk.apk", zip file "/data/app/com.company.myapp-1/split_config.ru.apk"],nativeLibraryDirectories=[/data/app/com.company.myapp-1/lib/arm, /data/app/com.company.myapp-1/base.apk!/lib/armeabi-v7a, /data/app/com.company.myapp-1/split_config.armeabi_v7a.apk!/lib/armeabi-v7a, /data/app/com.vimalsoft.trova-1/split_config.hdpi.apk!/lib/armeabi-v7a, /data/app/com.company.myapp-1/split_config.kk.apk!/lib/armeabi-v7a, /data/app/com.company.myapp-1/split_config.ru.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]]

and my Broadcast receiver is

[IntentFilter(new[] { Intent.ActionBootCompleted })] 
[BroadcastReceiver(Enabled = true, Exported = false)]
public class BootReceiver : BroadcastReceiver
{
    public override void OnReceive(Context context, Intent intent)
    {
        try
        {
            if (intent.Action == Intent.ActionBootCompleted)
            {
                Intent i = new Intent(context, typeof(startServiceAndroid));

                i.AddFlags(ActivityFlags.NewTask);

                if (Build.VERSION.SdkInt >= BuildVersionCodes.O)
                {
                    context.StartForegroundService(i);
                }
                else
                {
                    context.StartService(i);
                }
            }
        }
        catch (Exception ex)
        {
            Crashes.TrackError(ex);
        } 
    }
}

and my manifest looks like this

  <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="129" android:versionName="1.129" package="com.company.myapp" android:installLocation="preferExternal">
     <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="31" />
     <!-- Permissions -->
     <uses-permission android:name="android.permission.READ_PHONE_STATE" />
     <uses-permission android:name="android.Manifest.permission.READ_PHONE_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.INTERNET" />
     <uses-permission android:name="android.permission.WAKE_LOCK" />
     <uses-permission android:name="android.permission.VIBRATE" />
     <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
     <uses-permission android:name="android.permission.INSTANT_APP_FOREGROUND_SERVICE" />
     <!-- SignalOne Push Notification -->
     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
     <uses-permission android:name="android.permission.CAMERA" />
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
     <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
     <application android:label="MYapp" android:icon="@drawable/logo_180" android:hardwareAccelerated="true" android:networkSecurityConfig="@xml/network_security_config" android:largeHeap="true">
     <!--Foreground Service-->
     <service android:name="com.company.myapp.startServiceAndroid" android:enabled="true" android:exported="false" />
     <provider android:name="androidx.core.content.FileProvider" android:authorities="${applicationId}.fileprovider" android:exported="false" android:grantUriPermissions="true">
     <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"></meta-data>
     </provider>
     <!-- Start the Service if applicable on boot -->
     <receiver android:enabled="true" android:exported="false" android:name="com.company.myapp.BootReceiver">
     <intent-filter>
     <category android:name="android.intent.category.DEFAULT" />
     <action android:name="android.intent.action.BOOT_COMPLETED" />
     <action android:name="android.intent.action.QUICKBOOT_POWERON" />
     <!--For HTC devices-->
     <action android:name="com.htc.intent.action.QUICKBOOT_POWERON" />
     </intent-filter>
     </receiver>
     </application>
     <uses-feature android:name="android.hardware.telephony" android:required="false" />
    </manifest>

Thanks

Developer technologies .NET Xamarin
{count} votes

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.