簡體   English   中英

廣播接收器不能靜態工作

[英]Broadcast Receiver doesnt work statically

我想通知手機的電源何時通過廣播接收器連接和斷開連接。 但是問題是當我在清單中定義接收器時它不起作用,但是如果我動態定義它,它會很好地工作。 這是我的manifest.xml:

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


    <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"
        tools:ignore="GoogleAppIndexingWarning">

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

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver android:name=".PowerConnectionReceiver">
            <intent-filter>
                <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
                <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
            </intent-filter>
        </receiver>
    </application>

</manifest>

這是我的廣播:

package com.example.batterymanager;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;

public class PowerConnectionReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        /*if (intent.getAction().equals("android.intent.action.ACTION_POWER_CONNECTED")) {
            Toast.makeText(context, "Power Connected", Toast.LENGTH_SHORT).show();
        } else if (intent.getAction().equals("android.intent.action.ACTION_POWER_DISCONNECTED")){
            Toast.makeText(context, "Power Disconnected", Toast.LENGTH_SHORT).show();
        }*/

        Toast.makeText(context, "" + intent.getAction(), Toast.LENGTH_SHORT).show();
        Log.i("HUU", intent.getAction());
    }
}

我不知道為什么它不起作用! ):

新的android限制:

作為Android 8.0(API級別26)后台執行限制的一部分,面向API級別26或更高版本的應用無法再在其清單中為隱式廣播注冊廣播接收器。 但是,一些廣播目前不受這些限制。 無論應用程序所針對的API級別如何,應用程序都可以繼續注冊以下廣播的偵聽器。

https://developer.android.com/guide/components/broadcast-exceptions

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM