按钮单击时将值从主活动传递到广播接收器类

时间:2014-03-06 12:30:00

标签: android

我想将值从MainActivity类传递给BroadCast Receiver Class。这个编码是在MainActivity中完成的。我必须在清单文件中提及这个动作(" android.intent.action.AIRPLANE_MODE")?

    public void broadcastIntent(View v){
                if(togglebutton.isChecked()){
                Intent i=new Intent("android.intent.action.AIRPLANE_MODE");
                String x="heyo";
                i.putExtra("xx", x);
                sendBroadcast(i);
                }else{
                }



Class x extending BroadcastReceiver....    

        public void onReceive(Context context, Intent in) {
                // TODO Auto-generated method stub

                in.getExtras();
                String action=in.getAction();
                if(action.equals("android.intent.action.AIRPLANE_MODE")){
                    String u=in.getExtras().get("xx").toString();
                    Toast.makeText(context,"hi " +u, Toast.LENGTH_LONG).show();

                }else{
                Toast.makeText(context,"Intent detected", Toast.LENGTH_LONG).show();
            }
            }

3 个答案:

答案 0 :(得分:1)

使用共享偏好设置。关于这一点,有一些tutorial

public void broadcastIntent(View v){
    Activity activity = (Activity) view.getContext()
    SharedPreferences sharedPref = activity.getPreferences(Context.MODE_PRIVATE);
    SharedPreferences.Editor editor = sharedPref.edit();
    editor.putString("xx",x);
    editor.commit();
    Intent i=new Intent("android.intent.action.AIRPLANE_MODE");
    sendBroadcast(i);
}

然后是你的broadcastReceiver代码。

Class x extending BroadcastReceiver....    

        public void onReceive(Context context, Intent in) {
            SharedPreferences sharedPref = context.getPreferences(Context.MODE_PRIVATE);
            String xx = sharedPref.getString("xx", "");
 }

答案 1 :(得分:0)

在你的清单中注册你的BroadcastReceiver,然后你就去了。

答案 2 :(得分:0)

您需要在AndroidManifest.xml中定义BroadcastReceiver。 有关元素的文档,请参阅here

示例:

<receiver android:name=".YourReceiver">
    <intent-filter>
        <action android:name="com.example.intent.action.MY_ACTION" />
    </intent-filter>
</receiver>

注意:我不知道你到底想要达到的目的,但android.intent.action.AIRPLANE_MODE动作可能不是你想要自己发出的正确动作。