Почему мой широковещательный приемник не получает намерение BOOT_COMPLETED после перезагрузки устройства ZTE NUBIA? - PullRequest
0 голосов
/ 05 ноября 2019

Я сделал несколько простых приложений, чтобы продемонстрировать, как мое приложение будет автоматически открываться после перезапуска или выключения моего устройства ZTE NUBIA N1. (Android Lollipop 5.1.1) В этом случае я создал класс MainActivity и класс BootDeviceReceiver , который представляет широковещательный приемник с методом onReceive .

Внутри метода onReceive я поместил некоторый код, чтобы открыть свое приложение через класс MainActivity. После того, как я попытался перезагрузить или выключить свое устройство ZTE NUBIA N1, я не получил то, что ожидал, и мое приложение не открылось автоматически. Я попробовал то же самое приложение на Sony Xperia E5 (Android 6.0 Marshmallow), и у меня все получилось.

Я изучил эту проблему через Интернет и обнаружил, что некоторые устройства, такие как ZTE, XIAOMI и HUAWEI, не могут получить намерение BOOT_COMPLETED, потому чтоиз некоторых неизвестных для меня проблем.

Вот мой код, который на самом деле работает на устройстве Sony Xperia и, вероятно, на многих других устройствах, но не на устройстве ZTE NUBIA:

MainActivity.class

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


}
}

BootDeviceReceiver.class

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;


public class BootDeviceReceiver extends BroadcastReceiver {

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

    String action = intent.getAction();

    if(Intent.ACTION_BOOT_COMPLETED.equals(action)){
        Intent myIntent = new Intent(context, MainActivity.class);
        myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(myIntent);

    }
}

AndroidManifest

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.super.dez.bootztenubia">

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">


    <receiver
        android:name=".BootDeviceReceiver"
        android:enabled="true"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED"/>
            <action android:name="android.intent.action.QUICKBOOT_POWERON"/>

        </intent-filter>
    </receiver>

    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

ВОПРОС:

Кто-нибудь знает, как решить эту проблему с телефонами ZTE, чтобы я мог запускать свое приложение автоматически после перезагрузки или выключения телефона?

...