启动另一个应用
来源:互联网 发布:win 写的java导入到mac 编辑:程序博客网 时间:2024/06/07 12:57
方式一
A应用启动B,在B应用中注册一个BroadcastReceiver,然后在BroadcastReceiver中启动想要界面
@Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "收到广播了", Toast.LENGTH_SHORT).show(); Intent intent1 = new Intent(context, MainActivity.class); intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent1); }然后在A中发送广播
Intent intent = new Intent(); intent.setAction("..."); sendBroadcast(intent);看起来没有什么问题,但是如果B应用没有启动或者被杀死了,那么这种方法无效。
方式二
通过包名和类型启动
Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); ComponentName cn = new ComponentName("com.***.***", "com.***.***.MainActivity"); intent.setComponent(cn); startActivity(intent);注意,类名一定要是全类名。
如果只知道包名不知道类名,可用如下方法
private void doStartApplicationWithPackageName(String packagename) { // 通过包名获取此APP详细信息,包括Activities、services、versioncode、name等等 PackageInfo packageinfo = null; try { packageinfo = getPackageManager().getPackageInfo(packagename, 0); } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } if (packageinfo == null) { return; } // 创建一个类别为CATEGORY_LAUNCHER的该包名的Intent Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null); resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER); resolveIntent.setPackage(packageinfo.packageName); // 通过getPackageManager()的queryIntentActivities方法遍历 List<ResolveInfo> resolveinfoList = getPackageManager() .queryIntentActivities(resolveIntent, 0); ResolveInfo resolveinfo = resolveinfoList.iterator().next(); if (resolveinfo != null) { // packagename = 参数packname String packageName = resolveinfo.activityInfo.packageName; // 这个就是我们要找的该APP的LAUNCHER的Activity[组织形式:packagename.mainActivityname] String className = resolveinfo.activityInfo.name; // LAUNCHER Intent Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); // 设置ComponentName参数1:packagename参数2:MainActivity路径 ComponentName cn = new ComponentName(packageName, className); intent.setComponent(cn); startActivity(intent); } }
阅读全文
0 0
- Android启动另一个应用
- Android启动另一个应用
- 启动另一个应用
- 启动另一个应用
- 一个应用启动另一个应用
- Android应用启动另一个应用
- 在一个应用启动另一个应用
- 一个应用启动另一个应用+开机启动应用
- 如何用servlet启动另一个应用
- Android中通过intent启动另一个应用
- 通过广播启动另一个应用的Activity
- 跨应用启动(在一个APP里启动另一个APP)
- 在当前应用中启动另一个已安装的应用
- android 在一个应用中启动另一个应用
- 在一个应用中启动另一个已安装的应用
- 一个应用中启动另一个应用的几种方式
- Android 一个应用启动另一个应用的说明
- android 在一个应用中启动另一个应用
- iOS Runtime详解之SEL,Class,id,IMP,_cmd,isa,method,Ivar
- Oracle分页实现原理
- 软件定时器
- winForm改写到WPF的一些常见变化
- SpringBoot中,RestTemplate中文乱码解决方案
- 启动另一个应用
- ELK:kibana使用的lucene查询语法
- linux知识点随时补充
- 通过Navicat for MySQL远程连接的时候报错mysql 1130的解决方法
- GridView控件实现分页功能
- ionic
- ssh设置别名
- 我用代码做过的有趣的东西
- 安卓与JS交互