Я пытаюсь выполнить отключение устройства, когда 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>
Заранее спасибо.