关于安卓的Intent和发送广播的问题

你好,我现在做关于安卓广播的问题。现在有如下代码
这是MainActivity的代码

public class MainActivity extends AppCompatActivity {
Button btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        setContentView(R.layout.activity_main);
        btn=findViewById(R.id.btn1);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent intent=new Intent();
                intent.setAction("android.intent.action.s");
                intent.putExtra("yes","yes");
                MainActivity.this.sendBroadcast(intent);
            }
        });

    }

这是Main2Activity的代码

public class Main2Activity extends AppCompatActivity {
Button btn;
String yes1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        yes1=getIntent().getStringExtra("yes");
        Log.e("我的活动","我的活动2");
        btn=findViewById(R.id.btn2);
    }
}

这是Manifests清单的代码


<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapplication">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".Main2Activity">
            <intent-filter>
                <action android:name="android.intent.action.s">action>
            intent-filter>
        activity>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            intent-filter>
        activity>
    application>

manifest>


当我点击MainActivity的按钮时,发现点击后没有任何反应。这是为什么?
我的要求是
1、MainActivity不能跳转到Main2Activity的界面,不能跳转到Main2Activity的界面
2、MainActivity能执行Main2Activity里面的onCreate方法,能把log打印出来,就是那个“我的活动”,“我的活动2”这几个字能打印出来
3、MainActivity能不跳转,将值传到Main2Activity中,Main2Activity的yes1字符串不能为null或“”,也就是空值或者空字符串。而是能传值,将这个yes字符串传到Main2Activity里面
要求就是以上三点
大家认为应该怎么办?怎么做才可以。

Main2Activity按照下面修改一下应该就可以了,建议需要仔细学习一下 broadcast 的使用,教程有很多。。。

public class Main2Activity extends AppCompatActivity {
        Button btn;
        String yes1;
        MyBroadCastReceiver myBroadCastReceiver;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main2);
            btn=findViewById(R.id.btn2);
            myBroadCastReceiver = new MyBroadCastReceiver();
            IntentFilter intentFilter1 = new IntentFilter();
            intentFilter1.addAction("android.intent.action.s");
            Main2Activity.this.registerReceiver(myBroadCastReceiver, intentFilter1);
        }
        class MyBroadCastReceiver extends BroadcastReceiver{
            @Override
            public void onReceive(Context context, Intent intent) {
                //此处的indent为sendBroadcast发送的Indent
                yes1=getIntent().getStringExtra("yes");
                Log.e("我的活动","我的活动2");
            }
        }
    }

首先,这里就是一个意图没有啥广播。
其次,好好去理解一下acticity 的生命周期,按照你这个需求应该是要启动一个后台服务,多去学习一下

想让activity2处理广播或者接收传递的参数,必须对activity2进行初始化。不跳转情况下让activity2处理广播。这些都是在activity2已经初始化的情况下,也就是说activity2已经在内存中了

开什么玩笑呢,你Main2Activity没启动,不会触发onCreate