gpt4 book ai didi

android - 静默安装应用程序,并授予 INSTALL_PACKAGES 权限

转载 作者:IT老高 更新时间:2023-10-28 13:09:17 29 4
gpt4 key购买 nike

我正在尝试以静默方式将 apk 安装到系统中。我的应用位于/system/app 并成功授予权限“android.permission.INSTALL_PACKAGES”

但是我在任何地方都找不到如何使用此权限。我试图将文件复制到/data/app 并没有成功。我也尝试使用此代码

    Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(
Uri.parse("file:///sdcard/app.apk"),
"application/vnd.android.package-archive");
startActivity(intent);

但此代码会打开标准安装对话框。如何在授予 android.permission.INSTALL_PACKAGES 的情况下在没有 root 的情况下静默安装应用程序?

PS 我正在编写一个应用程序,它将在第一次启动时将许多 apk 从文件夹安装到系统中(替换安装向导)。我需要它来使固件更轻。

如果你认为我在写病毒:所有程序都安装到/data/app。权限 Install_packages 只能授予位于/system/app 或使用系统 key 签名的系统级程序。所以病毒无法到达那里。

http://www.mail-archive.com/android-porting@googlegroups.com/msg06281.html 所说如果应用程序具有 install_packages 权限,则可以静默安装。此外,您不需要 Install_packages 权限来安装包而不是静默安装。加号http://www.androidzoom.com/android_applications/tools/silent-installer_wgqi.html

最佳答案

您的第一个赌注是查看 Android 的原生 PackageInstaller .我建议以您喜欢的方式修改该应用程序,或者仅提取所需的功能。


具体来说,如果您查看 PackageInstallerActivity及其方法onClickListener:

 public void onClick(View v) {
if(v == mOk) {
// Start subactivity to actually install the application
Intent newIntent = new Intent();
...
newIntent.setClass(this, InstallAppProgress.class);
...
startActivity(newIntent);
finish();
} else if(v == mCancel) {
// Cancel and finish
finish();
}
}

然后您会注意到实际安装程序位于 InstallAppProgress类(class)。检查那个类你会发现 initView 是核心安装程序函数,它做的最后一件事是调用 PackageManagerinstallPackage 函数:

public void initView() {
...
pm.installPackage(mPackageURI, observer, installFlags, installerPackageName);
}

下一步是检查 PackageManager ,即抽象类。您会在那里找到 installPackage(...) 函数。坏消息是它标有@hide。这意味着它不能直接使用(您将无法通过调用此方法进行编译)。

 /**
* @hide
* ....
*/
public abstract void installPackage(Uri packageURI,
IPackageInstallObserver observer,
int flags,String installerPackageName);

但是您将能够通过反射访问这些方法。

如果你对PackageManagerinstallPackage功能是如何实现感兴趣的,可以看看PackageManagerService .

总结

您需要通过 ContextgetPackageManager() 获取包管理器对象。然后您将通过反射调用 installPackage 函数。

关于android - 静默安装应用程序,并授予 INSTALL_PACKAGES 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5803999/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com