2009-06-15 3 views
10

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

<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()); 

    } 
} 
+0

ログファイルに疑わしいものはありますか? –

+1

マニフェストファイルにUses Permissionを与える必要があるとします。 これを試してください

答えて

3

Intent javadocは異なるアクションを指定します。 "android.content.Intent.ACTION_MEDIA_MOUNTED"の代わりに "android.intent.action.MEDIA_MOUNTED"を使用してください

+0

私は実際の文字列定数、android.intent.action.MEDIA_MOUNTEDを試しましたが、まだ放送を受信することができません。他の考え? – user121196

+0

私は自分のアクティビティクラスのoncreate()で受信者を動的に作成しようとしましたが、私のSDCardBroadcastReceiverのonReceiveでは何も受信されませんでした。

 SDCardBroadcastReceiver myReceiver = new SDCardBroadcastReceiver(); \t IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_MOUNTED); \t filter.addAction(Intent.ACTION_MEDIA_UNMOUNTED); \t registerReceiver(myReceiver, filter); 
user121196

+4

これがうまくいかない場合、私は混乱しています。なぜそれを正解とマークしましたか?チウキの答えは正しいのですか? –

42

また、データスキームを "file"に設定する必要があります。

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

参考:android-developers threadあなたがプログラムで放送受信機を登録しておけば、あなたも「ファイル」へのスキームを設定する必要があります

+0

私はそれをマニフェストの定義と一緒に使うことはできませんでした。私はそれをコードに登録する必要がありました。マニフェストで定義してこの作業を行うことは可能ですか? – Lukap

+0

新しい質問を開始し、あなたの 'AndroidManifest.xml'を投稿してください。私は見てみましょう。 – chiuki

+0

あなたの答えが見えない場合は、自分自身を見つけることができません。 – jowett

4

IntentFilter filter = new IntentFilter(); 
filter.addAction(Intent.ACTION_MEDIA_MOUNTED); 
filter.addAction(Intent.ACTION_MEDIA_REMOVED); 
filter.addDataScheme("file"); 
mContext.registerReceiver(mExternalStorageReceiver, filter); 
関連する問題