Intent显式和隐式使用

显式Intent(意图明确):

FirstActivity.java
public class FirstActivity extends AppCompatActivity {

   ........

        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
          startActivity(intent); } });
 ........
}

  当点击事件发生之后,跳转到SecondActivity

隐式Intent1(启动自己程序内的活动):

FirstActivity.java
public class FirstActivity extends AppCompatActivity {

   ........

        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent("com.example.activitytest.ACTION_START");
          startActivity(intent);
            }
        });

 ........

}

AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   .......

    <application
        .......

<activity android:name=".FirstActivity" android:label="This is FirstActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
<activity android:name=".SecondActivity"> <intent-filter> <action android:name="com.example.activitytest.ACTION_START"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> </activity>
</application> </manifest>

  在AndroidManifest.xml中对SecondActivity的注册活动进行添加,添加action和category。 

  当FirstActivity中的Intent指定内容SecondActivity的注册活动中<action>内容相匹配时,即可实现跳转到SecondActivity。(android.intent.category.DEFAULT是默认的category,在startActivity被调用时会自动将这个category加入到intent)

注意⚠️:

1、每个Intent只能有一个action,可以有多个category;

2、如果Intent添加多个category,则需要在<intent-filter>......</intent-filter>中声明category

隐式Intent2(启动其他程序的活动):

调用系统浏览器打开网页

public class FirstActivity extends AppCompatActivity {

   ........

        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_VIEW);
          //首先指定Intent的action。 其中Intent.ACTION_VIEW是Android系统内置动作 intent.setData(Uri.parse("http://www.baidu.com"
));
          //通过Uri.parse()将字符串解析成Uri对象,再调用setData()将Uri对象输入intent           startActivity(intent);
} });  ........ }


原文地址:https://www.cnblogs.com/qianbin/p/8448685.html