ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Android Lollipop – PackageInstaller.Session commit()

2019-05-19 17:11:18  阅读:409  来源: 互联网

标签:android android-5-0-lollipop android-install-apk android-package-managers packag


我只是尝试使用PackageInstaller和PackageManager API在我的设备上安装软件包(从运行它的设备所有者应用程序).我一直在寻找例子但找不到符合我需要的东西.

以下是我安装Facebook应用程序的代码示例:

PackageManager pm = getPackageManager();
PackageInstaller mPackageInstaller = pm.getPackageInstaller();
PackageInstaller.SessionParams mSessionParams = new PackageInstaller.SessionParams(SessionParams.MODE_FULL_INSTALL);

mSessionParams.setReferrerUri(Uri.parse("file:///mnt/sdcard/Download/Facebook.apk"));
int mSessionId = mPackageInstaller.createSession( mSessionParams );

PackageInstaller.Session mPkgSession = PackageInstaller.openSession(mSessionId);
OutputStream mOStream = mPkgSession.openWrite("com.facebook.katana", 0, -1);
mPkgSession.fsync(mOStream);

我想,我需要启动的下一个功能是“提交(IntentSender statusReceiver)”.

所以请告诉我如何使用commit(),特别是如何声明一个正确的IntentSender来安装存储在/ sdcard中的APK.

谢谢 !!

解决方法:

您无法使用PackageInstaller.Session.commit()在新创建的用户中静默安装第三方应用程序,而无需特定的“权限”.
你要么需要:

INSTALL_PACKAGES权限.但是此权限不适用于第三方应用程序.因此,即使使用您的个人资料所有者应用,您也不会拥有此特定权限.
以ROOT_UID身份运行该过程.这意味着您必须根设备.

标签:android,android-5-0-lollipop,android-install-apk,android-package-managers,packag
来源: https://codeday.me/bug/20190519/1136708.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有