ブロードキャストレシーバクラスを使用してWiFi接続変更イベントを取得しようとしています。私はサムスンS7エッジとHTC 626Qでこれをテストして、それがうまくいきます(アプリケーションが閉じているときでも)。しかし、アプリケーションが閉じている場合、Huawei GR5 2017では動作しません。これは、アプリが画面上で実行されている場合にのみ機能します。 S7とGR5の両方のデバイスには、Android 7(Nougat)OSが搭載されています。一部のデバイスでブロードキャストレシーバが動作しない背景
ブロードキャストレシーバー
public class NetworkChangeReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context,intent.getAction(),Toast.LENGTH_SHORT).show();
}
}
AndroidManifestファイル
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="chanakamadurangakarunarathne.testbroadcastevents">
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<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">
<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=".NetworkChangeReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<action android:name="android.net.wifi.STATE_CHANGE" />
<action android:name="android.net.nsd.STATE_CHANGED" />
<action android:name="android.net.wifi.NETWORK_IDS_CHANGED" />
<action android:name="android.net.wifi.STATE_CHANGE" />
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
<action android:name="android.net.wifi.p2p.CONNECTION_STATE_CHANGE" />
<action android:name="android.net.wifi.p2p.DISCOVERY_STATE_CHANGE" />
<action android:name="android.net.wifi.p2p.PEERS_CHANGED" />
<action android:name="android.net.wifi.p2p.STATE_CHANGED" />
<action android:name="android.net.wifi.p2p.THIS_DEVICE_CHANGED" />
<action android:name="android.net.wifi.supplicant.CONNECTION_CHANGE" />
<action android:name="android.net.wifi.supplicant.STATE_CHANGE" />
</intent-filter>
</receiver>
</application>
</manifest>
私が本サービスを利用することができます知っているが、私はすべてのデバイスのためのブロードキャストレシーバーを使用することができればいいだろう。 "Broadcast Receiver not working background"について多くの質問がありましたが、私の質問に対する回答が見つかりませんでした。 なぜこれが起こり、これを克服する方法がありますか(ブロードキャストレシーバの使用のみ)?
ありがとう:
は、詳細は以下を参照してください。これはいくつかのHuaweiデバイスで機能しましたが、Huawei GR5 2017にはこの「保護されたアプリケーション」機能はありません。 – kmchmk
私は最終的にHuawei GR5 2017(Nougat)モデルでこれを解決する方法を見つけました。 設定 - >アプリ - >設定アイコン - >特別なアクセス - >最適化を無視 - >すべてのアプリ - >(アプリを選択) - >許可 – kmchmk
おっと! :-(それは直感的ではありません! –