在实际开发中,或许我们会需要打开一个别的APP,下面介绍下Android如何在自己的应用里面打开其它的应用。

方式1:如果我们知道包名和默认启动的Activity,可以用如下方式打开:

 

Intent intent = new Intent();ComponentName cn = new ComponentName("packageName", "默认启动的activity");intent.setComponent(cn);startActivity(intent);


举例:

Intent intent = new Intent();ComponentName cn = new ComponentName("com.example.demo", "com.example.demo.MainActivity");intent.setComponent(cn);startActivity(intent);

上述代码会打开一个包名为:com.example.demo,默认启动Activity为com.example.demo.MainActivity的APP

 

这种方式比较简单,但是实际上我们都不会知道要打开的APP的包名,更不会知道要打开的APP的默认启动Activity,下面我们上演另外一种打开其它APP方式。

 

方式2:在不知道应用包名,也不知道默认启动Activity的情况下,打开一个APP

(1)第一步是获取要打开的APP的包名,一个APP的包名可以通过如下代码获取

 

private void getAppInfo(Context context) throws Exception{        PackageManager packageManager = context.getPackageManager();        //获取所有安装的app        List installedPackages = packageManager.getInstalledPackages(0);        for(PackageInfo info : installedPackages){            String packageName = info.packageName;//app包名            ApplicationInfo ai = packageManager.getApplicationInfo(packageName, 0);            String appName = (String) packageManager.getApplicationLabel(ai);//获取应用名称        }    }

(2)第二步通过获取的APP名称,可以找出对应的APP包名,这样我们就知道了一个APP的包名,下面通过包名打开APP

 

public static void openApp(Context context, String packageName) {        final Intent intent = context.getPackageManager().getLaunchIntentForPackage(packageName);        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);        context.startActivity(intent);    }

方式3:通过scheme配置,启动activity,代码配置如下

                                                                                
public static void startActivity(Context context, String intentUrl){        final Intent intent = initIntent(intentUrl);        context.startActivity(intent);    }    private static Intent initIntent(final String uriString) {        final Intent intent = new Intent();        intent.addCategory(Intent.CATEGORY_DEFAULT);        intent.setAction(Intent.ACTION_VIEW);        intent.setData(Uri.parse(uriString));        return intent;    }
使用startActivity(context,"demo://demo_ac")


至此在不知道APP包名和默认启动Activity的情况下,完成打开APP

 

更多相关文章

  1. android 获得一个应用程序的启动次数,运行时间等信息
  2. Android:默认手机存储路径为TF卡
  3. Android中ComponentName的简单运用
  4. Android开机自启动+屏蔽系统功能
  5. Android组件——使用DrawerLayout仿网易新闻v4.4侧滑菜单
  6. flutter高德地图使用
  7. Android(安卓)最简单的应用间跳转小结
  8. Android(安卓)O Treble框架
  9. Android系统启动之配置文件解析

随机推荐

  1. 使用PHP发布整个mySQL命令
  2. php使用DOMDocument更改div但不更新页面
  3. 在数组中计数,其中值为0
  4. 如何添加动态参数
  5. 数据库布局更新是否仍在Magento中使用?
  6. PHP调用存储过程失败(没有执行到)--mysql_e
  7. 在php中检测浏览器,版本和平台的可靠方法
  8. 如何知道php zip扩展程序是否已安装?如何
  9. 从mysql中选择加密密码
  10. 《PHP高级知识进阶》系列技术文章整理收