BroadcastReceiver для выполнения чего-либо в Intent.ACTION_POWER_DISCONNECTED - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь выполнить отключение устройства, когда USB отключен. Для этого я использую BroadcastReceiver, как говорит Google, но он не работает, когда USB подключен, он работает, но не работает, когда он отключен.

Это мой класс BroadcastReceiver:

public class PowerDetector extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
    //1. Detect if the power is connected or disconnected
    String action = intent.getAction();

    if(action.equals(Intent.ACTION_POWER_CONNECTED))
    {
        // Do something when power connected
        Toast.makeText(context, "CONNECT", Toast.LENGTH_LONG).show();
    }
    else if(action.equals(Intent.ACTION_POWER_DISCONNECTED))
    {
        // Do something when power disconnected
        Toast.makeText(context, "Disconnected", Toast.LENGTH_LONG).show();
        SplashScreen.SafeDisconnection();
    }
}

}

Как я понимаю с документацией на Android, только с этим классом работает. Но позже я увидел, что вы можете вызвать получателя из внешнего класса следующим образом:

private void initPowerOff(){
    PowerDetector powerDetector = new PowerDetector();

    IntentFilter powerDisconnectedFilter = new IntentFilter(Intent.ACTION_POWER_DISCONNECTED);
    registerReceiver(powerDetector, powerDisconnectedFilter);
}

Но это все еще не работает. Это кажется простым в документации ... поэтому я не понимаю, что я делаю неправильно.

Вот как я объявил Получателя в манифесте:

<receiver android:name=".Utils.PowerDetector">
     <intent-filter>
          <action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
          <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
          <action android:name="android.intent.action.ACTION_SHUTDOWN" />
     </intent-filter>
 </receiver>

Заранее спасибо.

...