需求:
要求让用户选择喜欢的第三方应用 下载 并通过自己的UI运行
关键问题:
(1) 可交互下载, 用户可取消,显示进度.................这个问题好解决 ,有很多方式,如果不会可以联系我
(2) 安装apk
(3) 运行安装过的应用 ...... 怎样定位应用的Activity并激活 ( 如果是自己的activity 就好办了 )
解决方案
(1) 安装apk
直接贴出代码 就明白
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File("/sdcard/1.apk")), "app lication/vnd.android.package-archive");
startActivity(intent);
其中/sdcard/1.apk 就是要安装的apk,上面代码实际上是请求android的管理安装的activity
如果要强制安装过程,目前我还没有找到解决方法
(2)运行应用
首先android有一个PackageManager,这玩意功能 很强大,功能就和它的意思一样
假设:如果我们知道一个第三方Application的包的名称和Activity的名称,是否可以启动它的,答案当让市YES
启动代码:
PackageManager pm;
//初始化pm, 比如在activity里可以PackageManager pm = getPackageManager();
PackageInfo pi = pm.getPackageInfo("包的名称", PackageManager.GET_ACTIVITIES);
//PackageInfo 包含丰富的包的信息,这个'包的名称'是什么,在AndroidManifest.xml中有明确定义
// 比如 package="xxx.yyy.Portal.UI"
ActivityInfo ai=pi.activities[0]; // ActivityInfo 同样道理 他是 Activity的信息
//这里指向第一个包中的Activity, 大多数都是第一个Activity为启动Activity
if(ai==null) throw new Exception(pkg+"不包含任何Activity");
String sName=ai.name; //这里就得到Activity的类名了
启动它:
Intent intent = new Intent();
intent.setComponent(new ComponentName(pkg,sName));
parent.startActivity(intent);
(3)获得第三方应用的包名
只要有包名,就可以启动Activity了,但是不知道名字怎么办?
如果应用没有安装自然启动不了,只要安装了就有办法。
方法1 :
MyBroadcastReceiver myReceiver = new MyBroadcastReceiver();
IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_INSTALL);
filter.addAction(Intent.ACTION_PACKAGE_ADDED);
filter.addDataScheme("package");
registerReceiver(myReceiver, filter);
监视安装,在MyBroadcastReceiver的onReceive函数里
public void onReceive(Context arg0, Intent intent) {
String sPackageName=intent.getDataString(); //这个就是包名
}
也可以使用 AndroidManifest.xml配置来监视
方法2 :
枚举所有安装的应用,根据你自己的条件筛选
使用PackageManager的
public abstract List<PackageInfo> getInstalledPackages (int flags) 可以获得安装应用的列表。
apk安装及卸载的原理及代码
this should work:
Java: |
Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(new File(fileName)), "application/vnd.android.package-archive"); startActivity(intent);
|
that's because intent filter is:
XML: |
<activity android:name=".PackageInstallerActivity"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="content" /> <data android:scheme="file" /> <data android:mimeType="application/vnd.android.package-archive" /> </intent-filter> </activity>
|
intent filter for uninstallation:
XML: |
<activity android:name=".UninstallerActivity"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.DELETE" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="package" /> </intent-filter> </activity>
|
分享到:
相关推荐
需求是这样的,客户要求提供系统的接口来控制apk的安装和卸载,接口如下 boolean setAppInstallationPolicies(int mode, String[] appPackageNames) mode:应用名单类型 0:黑名单(应用包名列表中的所有项都不允许...
这个demo实现了android开发应用内下载安装apk升级版本的功能,非常简便轻量集成,完全原生代码即可实现,无需第三方框架。。。
该系统先进行第三方库的检测,细粒度识别出Android应用中的第三方库,再通过逆向工程技术静态分析apk文件,同时在Android模拟器中安装运行apk并监控其相关行为,从而检测出第三方库带来的安全威胁。分析结果显示,相...
Android 更新下载apk 安装apk 打开apk
1、正常安装——有安装界面,由系统自带的packageinstaller.apk应用处理安装及卸载过程的界面。...3、ROOT下完全静默安装——无安装界面,目前主流的第三方应用市场安装的方式,也可通过终端命令实现
apk安装器android,运行android.
Android应用程序apk安装器程序,注释详细,一看就懂,通过输入.apk文件地址,点击按钮即可安装apk程序
android socket 客户端 服务端 监听 apk安装完成
批量安装APK,我想还是比较简单的,借助android助手,很容易做到这一点(个人不喜各类助手连接Android时强制安装助手软件);通过adb命令执行多条安装命令也可以直接搞定。电子城里面一般都是借助“安装盒子”进行...
开发环境:android studio 实现用android代码安装apk,已经调通,在android 手机7.1版本运行本代码可以安装另外一个apk,分享给大家
如果用过一些手机助手的朋友都知道,手机助手下载其他软件的更新程序后会自动静默更新。APK静默安装是指实现了在APK...压缩包里有两种实现apk静默安装的方法说明和详细的操作文档与源码。 涉及模块&技术 静默安装 ...
未知应用安装权限默认开启,如下图所示 8.0以下手机未知应用安装权限.png Android8.0之后 未知应用安装权限默认关闭,且权限入口隐藏。 如何开启未知应用安装权限的入口,并设置允许安装? 在清单文件中添加...
使用Android5.0的环境编译的,不同版本之间,aidl文件可能会有差异,具体还需参照Android...详细参考我的博客文章《Android 无需root实现APK静默安装》:http://blog.csdn.net/yyh352091626/article/details/50533137
编写了一个shell脚本,实现了把多个第三方apk 自动解压预编译模块功能,编译到ROM中, 现在把功能模块流程框架和代码重点部分整理出来供大家参考,应该是可以移植到所有android方案的代码中使用的.
Android APK的安装卸载 Android APK的安装卸载
适配Android10以下及以上,下载更新apk自动安装,解决自动安装失败的问题。真实有用的,希望对大家有帮助。
android获取未安装APK文件的图标 android开发技巧整理
百视通小红盒子第三方apk安装攻略定版
android 无sdcard 下载安装 apk 多线程 断点 自动安装apk