Android中在一个应用中去启动另外一个应用
关注微信号:javalearns 随时随地学Java
或扫一扫
随时随地学Java
*情况一 ==》已知包名通常有两种方法:
方法一:
[java]
/**启动另外应用的代码,其中被启动的应用的包名为org.hy,应用的入口为org.hy.Test222Activity,此方法的2个应用的AndroidManifest.xml文件都不需要修改**/
Intent intent = new Intent();
intent.setComponent(new ComponentName("org.hy","org.hy.Test222Activity"));
intent.setAction(Intent.ACTION_VIEW);
startActivity(intent);
方法二:
[java]
/**启动另外应用的代码,其中被启动应用的action为org.hy.test222(自己随便定义),此方法的被启动的应用的AndroidManifest.xml要做修改**/
Intent intent = new Intent();
intent.setAction("org.hy.test222");
startActivity(intent);
[html]
/**被启动应用的AndroidManifest.xml**/
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.hy"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="10" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Test222Activity"
android:label="@string/app_name">
<intent-filter>
<action android:name="org.hy.test222"/>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
方法二中AndroidManifest.xml中category设置为android.intent.category.DEFAULT的情况是当Intent启动的时候没有明确指定启动哪个antivit时候就要这样设置。
*情况二 ==》未知包名:
这种情况虽然是不知道应用的包名,但是最终启动应用还是通过包名启动。所以要通过一种方法获得手机内应用的包名。
手机内分系统预装应用和非系统自己安装的应用,可以通过下边的方法判断,返回一个包名的List集合:
[java]
/**获得手机内应用的包名,返回一个List集合**/
public List<PackageInfo> getAllApps() {
List<PackageInfo> apps = new ArrayList<PackageInfo>();
PackageManager packageManager = this.getPackageManager();
//获取手机内所有应用
List<PackageInfo> paklist = pManager.getInstalledPackages(0);
for (int i = 0; i < paklist.size(); i++) {
PackageInfo pak = (PackageInfo) paklist.get(i);
//判断是否为非系统预装的应用 (大于0为系统预装应用,小于等于0为非系统应用)
if ((pak.applicationInfo.flags & pak.applicationInfo.FLAG_SYSTEM) <= 0) {
apps.add(pak);
}
}
return apps;
}
获得包名后,就可以通过获得要启动的包名启动应用了
[java]
public void launchApp() {
PackageManager packageManager = this.getPackageManager();
List<PackageInfo> packages = getAllApps();
PackageInfo pa = null;
for(int i=0;i<packages.size();i++){
pa = packages.get(i);
//获得应用名
String appLabel = packageManager.getApplicationLabel(pa.applicationInfo).toString();
//获得包名
String appPackage = pa.packageName;
Log.d(""+i, appLabel+" "+appPackage);
}
Intent intent = packageManager.getLaunchIntentForPackage("jp.co.johospace.jorte");//"jp.co.johospace.jorte"就是我们获得要启动应用的包名
startActivity(intent);
}
关注微信号:javalearns 随时随地学Java
或扫一扫
随时随地学Java
Android中在一个应用中去启动另外一个应用相关推荐
- android 多个dialog 交替显示,Android如何在一个AlertDialog中一个接一个地显示两个ListViews...
我有两个列表.一个列表显示可用列表中的所有可用项目(lv_available_items)和仅次要项目(lv_selected_items).我还希望该选定列表最多占用显示的50%,因此我使用属性&q ...
- java中 在一个异常处理中什么语句块是可多个的
java中 在一个异常处理中什么语句块是可多个的 参考文章: (1)java中 在一个异常处理中什么语句块是可多个的 (2)https://www.cnblogs.com/zhuyeshen/p/10 ...
- vue中在一个函数中调用另外一个函数
vue中在一个函数中调用另外一个函数 this.$options.methods.函数名.bind(this)();
- python中在一个字符串中查找另一个字符串。实现一个字符串的find函数。
1.在一个字符串中查找另一个字符串 2.找到了返回第一次出现的位置 3.没找到返回-1 4.参数s1为源字符串,参数s2为要查找的字符串 def index_of_str(s1, s2):n1=len ...
- Android——怎么在一个 Activity 中销毁另外一个 Activity
1,在Activity中定义静态变量mActivity,并让mActivity等于this public class MainActivity extends AppCompatActivity {p ...
- html网页中在一个表格中去除部分表格线
关键点:先合并可合并的单元格要将定义的style样式放在td(单元格)中,不能放在tr(行)中否则表格线不能完全隐去(需要显示表格线的可将style样式放在tr中) 一.head中的部份样式示例(可根 ...
- c#中在一个窗体中触发另一个窗体的事件
创建两个窗体,分别为form1,form2,在form1中添加控件textBox1和button1,创建一个form2的对象Form2 b = null; 在form2中添加button1,定义委托和 ...
- android之隐示意图跳转启动另一个activity
主面板布局:layout/activity_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/r ...
- Android中一个APP启动另一个APP并传递参数
被调用(启动)的APP: 项目名字:Demo_ybs 项目包名:com.ybs.demo_ybs 被调用APP中获取调用者的传递数据: package com.ybs.demo_ybs;import ...
最新文章
- 列表转字符串,再转回来,完全一致
- Mybatis基本配置和搭建
- 两个计算机系统安装,如何在一台电脑上同时重装两个系统|戴尔电脑怎么安装两个系统...
- java x.length_Java中的length和length()
- 怎么看电脑的hdmi是输出还是输入_高清hdmi矩阵切换器4进4出音视频方案介绍景阳华泰科技...
- intellij idea+easychm生成帮助文档
- 【气温预测】基于matlab BP神经网络气温预测【含Matlab源码 714期】
- 十代主板改win7_10代cpu装win7系统及bios设置教程(完美支持10代驱动)
- 555定时器+74系列芯片搭建八路抢答器,30s倒计时,附Proteus仿真等
- Apex英雄下载慢的解决方法|Apex英雄离线包分享
- 【C++】error: passing ‘const xxx’ as ‘this’ argument discards qualifiers
- 红色警戒2修改器原理百科(九)
- Jdon框架(JdonFramework)应用系统
- 意识比智力重要,选择比努力重要
- vue3 setup语法糖事件引用和写法
- rmf 文件如何打开?
- MATLAB学习笔记 函数记录(三)
- java基于springboot家庭水电燃气网上交费系统
- 面向对象版贪吃蛇大作战游戏创作
- PS学习(一)文档的新建,分辨率的设置
热门文章
- mysql左联右联区别_Mysql----关于内联,左联,右联,全联的使用和理解
- 只能爬到小图怎么办?如何通过一张小图获得大图
- Hdu 1174 爆头 计算几何问题
- 超实用 Linux 常用命令
- 舱位等级新增修改总结
- matlab比Excel好在哪,科学网—再讨论浮点运算精度问题(IDL与Excel和Matlab相比) - 董彦卿的博文...
- 如何设置路由路和连接WIFI
- google浏览器chrome无法升级的解决方案
- 图片压缩怎么弄?多种图片格式压缩大小的方法
- spring使用Test测试时报错:Singleton bean creation not allowed while singletons of this factory are in destru