アクティビティから放送受信機を起動したい。ブロードキャストレシーバーを拡張するSecond.Javaファイルと、ブロードキャストレシーバーを開始する必要があるMain.Javaファイルがあります。また、Main.Javaで次のようにすべてを試みましたが、マニフェストファイルで定義する方法がわかりません...
public class Main extends Activity {
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String rec_data = "Nothing Received";
private BroadcastReceiver myReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if( intent.getStringExtra("send_data")!=null)
rec_data = intent.getStringExtra("send_data");
Log.d("Received Msg : ",rec_data);
}
};
}
protected void onResume() {
IntentFilter intentFilter = new IntentFilter();
//intentFilter.addDataType(String);
registerReceiver(myReceiver, intentFilter);
super.onResume();
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
this.unregisterReceiver(this.myReceiver);
}
}
上記のように1つのクラスですべてを実行できない場合、Main.javaからブロードキャストレシーバーを呼び出すにはどうすればよいですか?誰かがどこで間違っているのか教えてもらえますか?ありがとう!
これを使用して、カスタムブロードキャストを送信します。
アクション名を定義します。
public static final String BROADCAST = "PACKAGE_NAME.Android.action.broadcast";
AndroidManifest.xmlレジスタレシーバー:
<receiver Android:name=".myReceiver" >
<intent-filter >
<action Android:name="PACKAGE_NAME.Android.action.broadcast"/>
</intent-filter>
</receiver>
登録者:
IntentFilter intentFilter = new IntentFilter(BROADCAST);
registerReceiver( myReceiver , intentFilter);
アクティビティからブロードキャストを送信します。
Intent intent = new Intent(BROADCAST);
Bundle extras = new Bundle();
extras.putString("send_data", "test");
intent.putExtras(extras);
sendBroadcast(intent);
あなたのBroadcastReceiver:
private BroadcastReceiver myReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Bundle extras = intent.getExtras();
if (extras != null){
{
rec_data = extras.getString("send_data");
Log.d("Received Msg : ",rec_data);
}
}
};
カスタムブロードキャストの詳細については、 カスタムインテントとレシーバーによるブロードキャスト を参照してください
このチュートリアルをここで確認してください。アクティビティからサービスを開始する方法やその逆を含む、ブロードキャストに関するすべてのヘルプを取得します
そのためには、レシーバーのインテントをブロードキャストする必要があります。以下のコードを参照してください。
Intent intent=new Intent();
getApplicationContext().sendBroadcast(intent);
インテントのアクションとその他のプロパティを設定し、アプリケーションコンテキストを使用してブロードキャストできます。レシーバータグを使用してAndroidManifest.xmlで定義する必要がある、ここで設定したインテントのアクションは何でもかまいません。
この答えを確認してください:
https://stackoverflow.com/a/5473750/928361
IntentFilter
で何も指定しない場合、レシーバークラスにインテントを通知する必要があると思います。