Android(安卓)中 Intent 的使用
在Android中,Intent的使用场景分为以下2种:
1、开启另一个Activity或者Service
2、注册广播接收者
其中开启另一个Activity 或者Service 又分为开启本应用中的Activity和开启系统应用中的Activity,开启本应用中的Activity或Service其实不用多说,大家也用的很多,值得注意的一点是Intent可以携带很多数据:
Intent intent = new Intent(); Bundle b = new Bundle(); //里面可以put很多数据 intent.putExtras() intent.setClass(MainActivity.this,OtherActivity.class);
有一点小细节就是如果在BroadCastReceiver中启动一个Activity的话,需要设置一个flag
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
下面列出一些开启系统应用的用法:
- 安装应用程序
String apkPath = "你的apk文件路径";Intent intent = new Intent(Intent.ACTION_VIEW);intent.addCategory(Intent.CATEGORY_DEFAULT);intent.setDataAndType(Uri.fromFile(new File(apkPath)), "application/vnd.android.package-archive");startActivityForResult(intent, 0); //如果用户取消安装的话,会返回结果
- 打电话
String number = "手机号码"; Intent intent = new Intent(); intent.setData(Uri.parse("tel:"+number)) startActivity(intent);
一下就是注册广播接收者的一些用法了,下面代码都是在清单文件中注册:
拨号广播:
android.intent.action.NEW_OUTGOING_CALL
权限:
android.permission.PROCESS_OUTGOING_CALLS
收到短信广播:
android.provider.Telephony.SMS_RECEIVED
权限:android.permission.RECEIVE_SMS
需要设置意图过滤器优先级开机广播:
android.intent.action.BOOT_COMPLETED
权限:android.permission.RECEIVE_BOOT_COMPLETED
安装卸载更新应用程序广播:
`android.intent.action.PACKAGE_ADDED` 安装`android.intent.action.PACKAGE_REPLACED` 更新`andorid.intent.action.PACKAGE_REMOVE``data-------------scheme="package"`
SD卡状态广播:
android.intent.action.MEDIA_MOUNTED
挂载andorid.intent.action.MEDIA_REMOVED
卸载android.intent.action.MEDIA_UNMOUNTED
没挂载
上面的一些Intent 可以通过设置意图过滤器来获取一些系统的广播,这样就可以实现一些特殊的需求了。
更多相关文章
- Android(安卓)NDK开发配置NDK
- Android: 打败system,自己监听Home键
- [九鼎RK3399Pro] Android(安卓)8.1默认自动给APP普通权限
- Android(安卓)共享文件的 Runtime 权限
- android编程语言如何实现一个简单的手机打电话应用程序
- Jenkins构建时’Users/Mac/Library/Android/sdk’ does not exis
- 关于Android(安卓)intent的知识
- 【Android(BLE)】Android(BLE)之蓝牙权限和feature
- 浅谈使用tcpdump、wireshark对Android应用程序进行抓包并分析