電話がwifiに接続されたときにアプリを自動的に起動しようとしています。ブロードキャストレシーバーを設定し、ブロードキャストが受信されたら「接続済み」アクティビティを起動するように指定するために使用しているコードは次のとおりです。
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION);
receiver = new BroadcastReceiver(){
public void onReceive(Context context, Intent intent){
Intent intent2 = new Intent(getApplicationContext(),com.example.package.Connected.class);
startActivity(intent2);
}
};
registerReceiver(receiver,intentFilter);
残念ながら、それは機能していません。logcat は、私のアクティビティが「IntentReceiver をリークした」と言っています。
これを解決する方法を知っている人はいますか?
編集:マニフェストファイルを介して受信者を登録しようとしました。このコードをマニフェストに追加しました:
<receiver android:name="com.example.package.receiver">
<intent-filter>
<action android:name="android.net.wifi.STATE_CHANGE" />
</intent-filter>
</receiver>
そして、このコードを私の主な活動に:
private BroadcastReceiver receiver = new BroadcastReceiver(){
public void onReceive(Context context, Intent intent){
Intent intent2 = new Intent(getApplicationContext(),com.example.package.Connected.class);
context.startActivity(intent2);
}
};
しかし、電話がwifiに接続すると、アプリがクラッシュします。Logcat には、「RuntimeException: レシーバーをインスタンス化できません」と表示されます。
それを解決する方法はありますか?