详解Android中通过Intent类实现组件间调用的方法

2019-12-10 18:00:01王冬梅
Intent能够实现应用间的数据交互与通讯,将实现者和调用者解耦,接下来就来详解Android中通过Intent类实现组件间调用的方法,需要的朋友可以参考下  

Intent是Android中用来调用其它组件的类,通过Intent,我们可以非常方便的调用Activity,Broadcast Receiver和Service。

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("http://www.easck.com/pre>
	
	

上面这段代码可以用来调用第三方的Activity(启动第三方浏览器来打开百度首页)。
Intent有隐式和显式之分,上面的

Intent intent = new Intent(Intent.ACTION_VIEW);

所创建的intent被称为隐式Intent。构建隐式Intent需要一个表示action的字符串(例如Intent.ACTION_VIEW,其值为" android.intent.action.VIEW"),Android会寻找能够处理该action的Activity(在manifest文件中的该Activity下的intent-filter中声明),并且调用他。
有时候可能多个Activity都声明能够处理某一个action,例如:

<activity
  android:name=".Activity1">
  <intent-filter>
    <action android:name="com.abc.def" />
    <category android:name="android.intent.category.DEFAULT" />
  </intent-filter>
</activity>
<activity
  android:name=".Activity2">
  <intent-filter>
    <action android:name="com.abc.def" />
    <category android:name="android.intent.category.DEFAULT" />
  </intent-filter>
</activity>

上面Activity1和Activity2都声明能够处理“com.abc.def”的action,因此当我们执行以下代码时