android广播里怎么实现Intent页面跳转 广播接收到信息就跳转

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android广播里怎么实现Intent页面跳转 广播接收到信息就跳转相关的知识,希望对你有一定的参考价值。

参考技术A 上面的采纳回答是不对的,两位都没弄明白问题出在哪里,不用那么麻烦直接将跳转的intent添加一个方法:
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
然后使用广播的context调用startactivity(intent);就可以了;
记住一点

凡是广播去调用一个新的Activity加这句。

Android使用Intent实现页面跳转

Intent 信使、意图

由Intent来协助Android各个组件之间跳转

1、


startActivity(intent)

包下新建一个类,FActivity.class

public class FActivity extends AppCompatActivity 
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.factivity);
    

新建一个XML文件factivity.xml

<Button
    android:id="@+id/bt1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="First"/>
<Button
    android:id="@+id/bt2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Second"/>
<TextView
    android:id="@+id/text1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Hello World!"
    android:layout_gravity="center"
    />

同样在创建第二对class和xml。

在AndroidManiFest中注册两个新类,并将默认启动类放在最前:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.bcp.layouttest">

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

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

        <activity android:name=".SActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </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>


添加按钮事件:

public class FActivity extends AppCompatActivity 
    private Button bt_first;
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.factivity);
        /***
         * 点击第一个按钮实现跳转页面
         */

        bt_first= (Button) findViewById(R.id.bt1);
        bt_first.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View view) 
                
                Intent intent=new Intent();
                //第一个:上下文对象
                //第二个:目标文件
                intent.setClass (FActivity.this,SActivity.class);
                startActivity(intent);
            
        );
    


2、

startActivityForResult(intent,requestCode);

onActivityResult(int requestCode,int resultCode,Intent data)

setResult(resultCode,data);


查看代码:

FActivity.java

public class FActivity extends AppCompatActivity 
    private Button bt_first;
    private Button bt_second;
    private TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.factivity);
        /***
         * 点击第一个按钮实现跳转页面
         */

        bt_first= (Button) findViewById(R.id.bt1);
        bt_first.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View view) 
                Intent intent=new Intent();
                intent.setClass (FActivity.this,SActivity.class);
                startActivity(intent);
            
        );

        /***
         * 通过startActivityForresult实现
         */
        bt_second= (Button) findViewById(R.id.bt2);
        bt_second.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View view) 
                Intent intent=new Intent().setClass(FActivity.this,SActivity.class);
                /***
                 * 第二个参数是请求的标示
                 */

                startActivityForResult(intent,1);
            
        );

        tv= (TextView) findViewById(R.id.text1);
    

    /***
     * 通过startActivityForresult实现,接收返回数据的方法
     * 一、请求的标示
     * 二、第二个页面返回的标示
     * 三、第二个页面传回的数据
     */
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) 
        super.onActivityResult(requestCode, resultCode, data);
        //判断是否满足条件来进行回传数据
        if(requestCode==1&&resultCode==2)
            String content=data.getStringExtra("intent");
            tv.setText(content);
        
    


SActivity.java

public class SActivity extends AppCompatActivity
    private Button bt;
    private String content="Hello~!";
    @Override
    protected void onCreate( Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.sactivity);

        /***
         * 第二个页面给第一个页面回传数据
         * 回传给第一个页面的实际上是一个intent对象
         */
        bt= (Button) findViewById(R.id.bt3);
        bt.setOnClickListener(new View.OnClickListener() 
            @Override
            public void onClick(View view) 
                Intent intent=new Intent();
                //创建回传对象
                intent.putExtra("intent",content);
                setResult(2,intent);

                //结束当前页面
                finish();
            
        );


    




App的签名和打包:

1、为了保证每个应用开发者的合法。

2、防止别人通过相同的Package Name来混淆替换已经安装的程序,从而出现一些恶意篡改

3、保证我们每次发布的版本的一致性(如自动更新不会因为版本不一样而无法安装)



以上是关于android广播里怎么实现Intent页面跳转 广播接收到信息就跳转的主要内容,如果未能解决你的问题,请参考以下文章

Android搞事篇——使用Intent跳转界面

android接受不到开机广播

Android使用Intent实现页面跳转

Android Studio 使用Intent实现页面的跳转(带参数)

怎样做点击推送消息,跳转到指定页面

安卓:Intent实现页面跳转传输数据