0

I'm trying to make an application that, on ring, will identify a phone number from an internet database. No matter what I do, MIUI (In Redmi Note 8T Android 11) eventually kills my application after a while and a notification of the phone state change is not received.

Following advice from here and from here and my manifest:

    <receiver android:name=".ServiceReceiver">
        <intent-filter>
            <action android:name="android.intent.action.PHONE_STATE" />
        </intent-filter>
    </receiver>

and the permissions:

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission
    android:name="android.permission.WRITE_CALL_LOG"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>

and in onCreate:

 ComponentName onBootReceiver = new ComponentName(getApplication().getPackageName(), BootReceiver.class.getName());
    if(getPackageManager().getComponentEnabledSetting(onBootReceiver) != PackageManager.COMPONENT_ENABLED_STATE_ENABLED)
        getPackageManager().setComponentEnabledSetting(onBootReceiver,PackageManager.COMPONENT_ENABLED_STATE_ENABLED,PackageManager.DONT_KILL_APP);

and my service receiver:

public void onReceive(Context context, Intent intent) {
    MyPhoneStateListener phoneListener = new MyPhoneStateListener();
    telephony = (TelephonyManager) context
            .getSystemService(Context.TELEPHONY_SERVICE);
    telephony.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE);
}

public void onDestroy() {
    telephony.listen(null, PhoneStateListener.LISTEN_NONE);
}

and my boot receiver:

@Override public void onReceive(Context context, Intent intent) {

    if (Objects.equals(intent.getAction(), Intent.ACTION_BOOT_COMPLETED)) {
        Intent i = new Intent(context, MainActivity.class);
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(i);
    }
}

and also, in MIUI preferences, I 've set the app to 'auto start', remove all battery restrictions and enabled all manual permissions MIUI has in the preferences for this app.

What else can I do? Thanks a lot.

Michael Chourdakis
  • 9,693
  • 2
  • 38
  • 66

1 Answers1

0

Have you tried the lock button in the app/task switcher ? You could also try the memory optimization settings 'Developer options' (if they are still present): https://s.kaskus.id/images/2018/06/11/521121_20180611073055.png

If nothing else works you could also add a background service to the app...

Crispert
  • 978
  • 6
  • 13