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

Android 单击按钮将值从主活动传递到广播接收器类,android,Android,我想将值从MainActivity类传递到BroadCast Receiver类。这个编码是在MainActivity中完成的。我是否也必须在清单文件中提到这个操作(“android.intent.action.flair_MODE”) public void broadcastIntent(View v){ if(togglebutton.isChecked()){ Intent i=new Intent("android

我想将值从MainActivity类传递到BroadCast Receiver类。这个编码是在MainActivity中完成的。我是否也必须在清单文件中提到这个操作(“android.intent.action.flair_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();
            }
            }

使用共享首选项。这其中有些道理

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);
}
然后是你的广播接收机代码

Class x extending BroadcastReceiver....    

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

在您的menifest中注册您的BroadcastReceiver,然后开始。

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

例如:

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


注意:我不知道您最终想要实现什么,但是android.intent.action.Planet\u模式的操作可能不是您想要发送给自己的正确操作。

发生了什么,您收到了什么吗?它显示了这一行中的错误,即方法getActivity()类型MainActivity未定义,无法将上下文解析为变量SharedReferences sharedPref=getActivity().getPreferences(context.MODE_PRIVATE);您在哪里使用该broadcastIntent方法?它在这一行中显示错误,即类型Receiver SharedReferences sharedPref=context().getPreferences(context.MODE_PRIVATE)的方法上下文未定义;我在回答中做了更改,请在应用我的更改后立即尝试。我正在主活动public void broadcastIntent(视图v){if(tb.isChecked()){String x=“heyo”;SharedReferences SharedRef=getActivity().getPreferences(Context.MODE_PRIVATE);SharedReferences.Editor=SharedRef.edit();editor.putString(“xx”,x);editor.commit();Intent i=new Intent(“android.Intent.action.player_MODE”);sendBroadcast(i);}else{}我定义bt i无法传递数据如果您实际尝试以广播形式发送飞机模式操作,则可能会失败:java.lang.SecurityException:权限拒绝:不允许发送广播android.intent.action.Planet\u模式。我在mainactivity中提供了一个togglebutton,我希望在选中该togglebutton时,如果手机处于AirClone模式,则会显示一个toast。。。。。。如果未选中togglebutton,则什么也不会发生。