AndroidのBroadcastReceiverは、任意の放送イベントを受け取ることができません

StackOverflow https://stackoverflow.com/questions/994746

  •  13-09-2019
  •  | 
  •  

質問

私は、SDカードのマウントとアンマウントを検出するために、BroadcastReceiverを作成しました イベントは、しかし、私はまったくのイベントを受け取ることができないのです。 ここのAndroidManifest.xmlだ。

<receiver android:enabled="true" android:label="SDCardMountReceiver" android:exported="true" android:name="xxx.broadcasts.SDCardBroadcastReceiver">
    <intent-filter>
        <action android:name="android.content.Intent.ACTION_MEDIA_MOUNTED"></action>
        <!-- or <action android:name="android.content.Intent.ACTION_MEDIA_UNMOUNTED" />--></intent-filter>
</receiver>

そしてSDCardMountReceiverクラスます:

public class SDCardBroadcastReceiver extends BroadcastReceiver {
    public SDCardBroadcastReceiver() {
        super();
        System.err.println("constructor");
    }

    public void onReceive(Context context, Intent intent) {
        Log.d("SDCardBroadCastReceiver", "receive " + intent.getAction());
        System.err.println("jonathan receive " + intent.getAction());

    }
}
役に立ちましたか?

解決

名前:

意図するのJavadocは異なるアクションを指定します値。 代わりに "android.content.Intent.ACTION_MEDIA_MOUNTED"

の "android.intent.action.MEDIA_MOUNTED" を使用します

他のヒント

また、「ファイル」へのデータスキームを設定する必要があります。

   <intent-filter>
     <action android:name="android.intent.action.MEDIA_MOUNTED" />
     <data android:scheme="file" /> 
   </intent-filter>

参考:アンドロイド、開発者はのスレッド

あなたがプログラムで放送受信機を登録する場合は、

、あなたはまた、「ファイル」へのスキームを設定する必要があります。

IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_MEDIA_MOUNTED);
filter.addAction(Intent.ACTION_MEDIA_REMOVED);
filter.addDataScheme("file");
mContext.registerReceiver(mExternalStorageReceiver, filter);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top