我想通过使用PackageInstaller和PackageManager API在我的设备上安装软件包(来自运行在其上的设备所有者应用程序)。我一直在寻找例子,但找不到符合我需要的任何东西。Android Lollipop - PackageInstaller.Session commit()
这里是我的代码安装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。
谢谢!
由于我lanching从设备所有者应用这些功能,以下权限似乎是确定: <使用的许可机器人:名称=“ANDROID.PERMISSION .INSTALL_PACKAGES“/> – CyrBt
我可以实现无提示安装吗?如果我的应用程序是使用制造商的signed.jar签名的,并且安装为系统应用程序? – beginner