显式意图:调用Intent.setComponent()或Intent.setClass()方法明确指定了组件名的Intent为显式意图,显式意图明确指定了Intent应该传递给哪个组件。即组件的包名、组件名、组件的class。
隐式意图:没有明确指定组件名的Intent为隐式意图。 Android系统会根据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最合适的组件来处理这个意图。
显示意图非常常用也非常简单一般用于应用程序内之间Activity的相互调用转换,就不多说了,这里我介绍一下隐式意图:
简单概括就是: 意图包括:Action(动作),Category(附加信息),Data(数据,具体内容),Tpye(类型)等等,举个例子,说白了意图就是启动一个组件的的完整的动作信息,就像打人,打就是Action动作,人就是Data内容,而Type就是类型,打什么人呢?打坏人,type就是坏指的类型,只有这些信息全了才能执行一个完整的意图,当然还有一些信息,比如scheme就是URI类型的数据的前缀,就像这个例子当中的sms:,还有host主机名,path路径等。

显示调用系统的intent的例子

package com.example.testnetconnect;
import android.net.ConnectivityManager;
 import android.net.NetworkInfo;
 import android.os.Bundle;
 import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.view.Menu;
 import android.widget.Toast;public class MainActivity extends Activity {
 @Override
  protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
   //测试系统的网络是否连接
   
   ConnectivityManager cm = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
   NetworkInfo info = cm.getActiveNetworkInfo();
   if(info!=null&&info.isConnected()){
    Toast.makeText(this, "网络是连接的", 1).show();
   }else{
    Toast.makeText(this, "网络没有连接", 1).show();
    Intent intent = new Intent();
    //设置包名,和类名cmp=com.android.settings/.SubSettings
    intent.setClassName("com.android.settings", "com.android.settings.SubSettings");
    startActivity(intent);
   }
  } }

public class MainActivity extends Activity {
 @Override
  protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
  }
  public void click(View view){
   Intent intent = new Intent();
   //隐士意图:定义操作的行为,找一个最适合的对象来执行
   intent.setAction(Intent.ACTION_VIEW);
   intent.setData(Uri.parse("https://www.baidu.com"));
   startActivity(intent);
  }

显示意图和隐式意图的应用场景:

显示意图:同一个应用程序自己激活自己的东西,推荐使用显示意图。

隐式意图:不用应用程序中,激活别人的应用或者自己的应用被别人激活,使用隐式意图。例如查询系统所有的activy是不是满足的条件的activy。

如果有判断多少个,1个直接启动,如果有多个,列表的方式

如果没有应用程序异常终止。