1、通过APP启动另一个APP

直接上代码,

    PackageManager packageManager = getPackageManager();    if (checkPackInfo(packname)) {        Intent intent = packageManager.getLaunchIntentForPackage(packname);        startActivity(intent);    } else {        Toast.makeText(MainActivity.this, "没有安装" + packname, 1).show();    }    /**     * 检查包是否存在     *     * @param packname     * @return     */    private boolean checkPackInfo(String packname) {        PackageInfo packageInfo = null;        try {            packageInfo = getPackageManager().getPackageInfo(packname, 0);        } catch (PackageManager.NameNotFoundException e) {            e.printStackTrace();        }        return packageInfo != null;    } 

如果手机上已经安装了另一个APP直接就能够打开了。

2、打开另一个APP指定的Activity

    Intent intent = new Intent();    //第一种方式    ComponentName cn = new ComponentName("com.example.fm", "com.example.fm.MainFragmentActivity");    try {        intent.setComponent(cn);        //第二种方式        //intent.setClassName("com.example.fm", "com.example.fm.MainFragmentActivity");        intent.putExtra("test", "intent1");        startActivity(intent);    } catch (Exception e) {        //TODO  可以在这里提示用户没有安装应用或找不到指定Activity,或者是做其他的操作    }

这里有两点需要注意
1、需要将目标Activity的android:exported="true"属性在所属应用AndroidMainfest里设置为true,意思是当前Activity可以被外部应用访问,否则会报下面的错误

  Caused by: java.lang.SecurityException: Permission Denial: starting  Intent   { cmp=com.example.fm/.MainFragmentActivity (has extras) } from ProcessRecord  {39282a97 11545:com.xing.toolbardemo1/u0a71}  (pid=11545,     uid=10071) not exported from uid 10067

2、需要在当前应用的AndroidMainfest里也声明目标Activity,否则会报下面的错误
(5.0以后好像不会有这个错,我用的了两个5.0一下的测试机都报错了)

   Caused by: android.content.ActivityNotFoundException: Unable to find    explicit activity class {com.example.fm/com.example.fm.MainFragmentActivity};    have you declared this activity in your AndroidManifest.xml? 

在清单文件里声明目标Activity就OK了

  "com.example.fm.MainFragmentActivity">activity>

这样我们就实现了通过一个APP打开另一个APP的功能啦。



作者:吾若成疯
链接:https://www.jianshu.com/p/42ae7066f8f3
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

更多相关文章

  1. Android(安卓)uiautomator 使用入门官方教程
  2. android 跳转到当前应用的详情页面
  3. Android(安卓)Error:AAPT: error: resource android:attr/colorEr
  4. android 常用intent
  5. android 设备开发 让应用程序出现在模拟器启动列表中
  6. Android应用程序键盘(Keyboard)消息处理机制分析(22)
  7. Android让所有应用都竖屏显示或者横屏显示
  8. Android应用程序键盘(Keyboard)消息处理机制分析(20)
  9. Android(安卓)Error:AAPT: error: resource android:attr/colorEr

随机推荐

  1. android五个进程等级
  2. Android(安卓)横屏显示
  3. android 按home键返回到桌面后,再按桌面应
  4. Android(安卓)编译 product 分区
  5. Android(安卓)Edittext设置负数以及小数
  6. Android应用默认权限开启
  7. Android的唤醒锁和键盘锁
  8. android 自定义圆形ProgressBar
  9. Android多媒体--利用Service实现背景音乐
  10. Android(安卓)读SIM卡信息