Android中从一个应用中启动另外的应用的实现方式
2017-12-17 18:15
183 查看
核心代码如下
1. 第一种,知道应用程序的包名和启动的Activity的类名
Intent intent = new Intent(); ComponentName cn = new ComponentName("com.example.test03", "com.example.test03.IntentActivity"); intent.setComponent(cn); intent.setAction(Intent.ACTION_VIEW); startActivity(intent);
2. 第二种 只知道应用的包名
Intent launchIntentForPackage = this.getPackageManager().getLaunchIntentForPackage("com.example.test03"); this.startActivity(launchIntentForPackage);
3. 第三种 知道应用的包名和启动的Activity的类名,但是这个Activity类不是应用程序的入口的Activity
Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); ComponentName cn = new ComponentName("com.example.test03", "com.example.test03.IntentActivity"); intent.setComponent(cn); intent.setAction(Intent.ACTION_VIEW); startActivity(intent);
==特别注意==
++如果要启动的类或者Activity不是应用的入口Activity,使用第一种方法,就会出现如下错误++E/AndroidRuntime(3594): Caused by: java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.VIEW cmp=com.example.test03/.IntentActivity } from ProcessRecord
我们可以看到这个错误不是平时简单的看到的那种缺少系统权限的操作,而是权限拒绝的意思。
所以如何解决?
有如下两种解决方法:
1.代码设置
Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER);
2.清单文件中进行配置,加一个exported的属性
<activity android:name="com.example.test03.IntentActivity" android:exported="true"></activity>
为什么我们的入口Activity不需要设置这个属性,因为在我们设置了入口activity设置了Action和category这两个属性,相当于是设置exported的属性为true。所以在入口的Activity中不需要进行设置这个属性
相关文章推荐
- Android 中如何从一个App启动另外一个App(如启动支付界面、启动地图界面、应用商场下载App等场景)
- android采用Chrome Intent方式实现从浏览器启动应用
- android 隐藏应用图标,用快捷方式做启动入口,实现伪动态改变图标
- 解析Android应用启动后自动创建桌面快捷方式的实现方法
- 在Android中启动另外一个应用
- 关于android创建快捷方式会启动两个应用的问题(一)
- Android 在一个应用中如何启动另外一个已安装的应用!!!
- 【Android应用开发】-(19)Android 串口编程原理和实现方式(附源码)
- Android 在一个应用中如何启动另外一个已安装的应用
- Android应用启动后自动创建桌面快捷方式
- Android应用启动后自动创建桌面快捷方式
- [Android] Android应用启动后自动创建桌面快捷方式
- Android高手进阶教程(十二)之----Android 在一个应用中如何启动另外一个已安装的应用!
- Android 在一个应用中如何启动另外一个已安装的应用!!!
- Android应用启动后自动创建桌面快捷方式
- android 2种切换语言方式:应用内切换和随系统而切换 代码实现重启应用
- Android高手进阶教程(十一)----Android 在一个应用中如何启动另外一个已安装的应用!!!
- Android 在一个应用中如何启动另外一个已安装的应用
- Android应用启动后自动创建桌面快捷方式
- 【Android应用开发】-(18)静默方式实现批量安装卸载应用程序