Android之Intent介绍

1.显示Intent

//启动Atr的时候
startActivity(new Intent(MainActivity.this,AnotherAtr.class));


2.隐式Intent

startActivity(new Intent(AnotherAtr.Action));

//1.需要在Mainfest添加category和action名字
<activity android:name=".AnotherAtr">
    <intent-filter>
        <category android:name="android.intent.category.DEFAULT"></category>
        <action android:name="com.example.ling.createnewatr.intent.action.AnotherAtr"></action>
    </intent-filter>
</activity>

//2.需要在NewAtr设置静态变量:因为action命名太长
public static final String Action = "com.example.ling.createnewatr.intent.action.AnotherAtr";

注意:action的命名虽然是可以随意的,但是最好按规则命名,前缀+intent.action.+类名

ps:通过隐式Intent,是可以跨应用跳转的.如果不希望能被跳转

在Mainfest上添加exported
<activity android:name=".AnotherAtr" android:exported="false">


3.过滤器选项

因为Intent跳转可以跨应用,所以同时设置2个或更多的过滤器。但有的时候有两个Action的过滤器,但要跳转到指定的app,可以在过滤器中添加data

<data android:scheme="app"></data>

//Atr中
startActivity(new Intent(AnotherAtr.Action, Uri.parse("app://任意参数")));


4.被浏览器链接启动本地app设置

//1.在mainfest
<activity android:name=".MyAtr">
    <intent-filter>
        <category android:name="android.intent.category.DEFAULT"></category>
        //browesr 浏览器,能够被浏览
        <category android:name="android.intent.category.APP_BROWSER"></category>
       //当前的view显示
        <action android:name="android.intent.action.VIEW"></action>
        //设置协议为APP
        <data android:scheme="app"></data>
    </intent-filter>
</activity>

//2.读取浏览器的参数。在Atr onCreate上读取
public class MyAtr extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my_atr);


        Uri uri = getIntent().getData();
        System.out.println(uri);


    }
}


你可能感兴趣的:(Android之Intent介绍)