隐式 Intent 是指在创建 Intent 对象时,不指定具体的接收者,而是定义要执行的 Action、Category 和 Data,然后让 Android 系统根据相应的匹配机制找到要启动的 Activity。例如,在Activity A 中隐式启动 Activity B 需要经过如图 2 所示的过程。
这里我们要在AndroidManifest(项目清单)的定义Intent过滤器的属性:
<activity android:name=".B_Activity">
<intent-filter>
<action android:name="com.example.mydemo.B_Activity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
//这是给B_Activity设置的唯一标识,与AndroidManifest的B_Activity的action同名
private final static String JUMP_TO_B = "com.example.mydemo.B_Activity";
Intent intent = new Intent();
intent.setAction(JUMP_TO_B); //为Intent设置动作
if (intent.resolveActivity(getPackageManager()) != null){
startActivity(intent);
}
这样就可以实现跳转到B_Activity。
从上面的例子我们可以简单了解隐式Intent的调用机制,同样调用通话,发短信和相机的机制类似。这里就不再详细讲解了。
下面贴出代码:
1.调用通话
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);//调用拨号面板
intent.setData(Uri.parse("tel:17772339029")); //设置要拨打的号码
if (intent.resolveActivity(getPackageManager()) != null){
startActivity(intent);
}
注意:要在AndroidManifest里面定义置允许该应用拨打电话权限:
<uses-permission android:name="android.permission.CALL_PHONE"/>
2.调用发短信
Intent intent = new Intent();
intent.setAction(Intent.ACTION_SENDTO);//调用发送短信息面板
intent.setData(Uri.parse("smsto:17370451867"));//设置要发送的号码
intent.putExtra("sms_body","这是一条隐式调用的实例"); //设置要发送的信息内容
if (intent.resolveActivity(getPackageManager()) != null){
startActivity(intent);
}
注意:要在AndroidManifest里面定义置允许该应用发短信的权限:
<uses-permission android:name="android.permission.SEND_SMS"/>
3.调用相机
Intent intent = new Intent();
intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);//调用相机面板
if (intent.resolveActivity(getPackageManager()) != null){
startActivityForResult(intent,REQUEST_CODE_1);
}
相机除了调用外还要通过重写onActivityResult(……)处理回传数据:
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (REQUEST_CODE_1 == requestCode){
Bundle bundle = data.getExtras();
Bitmap bitmap = (Bitmap) bundle.get("data");
ivCamera.setImageBitmap(bitmap);
}
}
与显示的数据互传类似,不再赘述。
Android 系统为我们提供了许多的标准Activity 动作。可参考这位博主的文章学习:https://blog.youkuaiyun.com/weixin_30493401/article/details/95139578
链接:百度网盘下载 提取码:7vnk