【问题标题】:Install other apks silently静默安装其他apk
【发布时间】:2018-05-27 09:56:31
【问题描述】:

有没有办法构建一个Android应用程序,可以在不询问用户安装权限的情况下静默下载和安装其他apk?

到目前为止,下载 apk 很容易,问题在于安装它们时需要用户的批准才能安装。

到目前为止,我已经尝试了以下代码

    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setDataAndType(Uri.fromFile(new File(s)), "application/vnd.android.package-archive");
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // without this flag android returned a intent error!
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivityForResult(intent, INSTALL_APK);

这要求用户批准安装 apk。 是否有其他方法可以在不提示用户的情况下执行此操作?

谢谢

【问题讨论】:

  • 签出this
  • 你能再解释一下你的用例吗?
  • 总是要问的第一个问题,你想要一个应用程序对你这样做吗?想想这会对您的设备造成多大的恶意。

标签: android android-intent apk


【解决方案1】:

不,未经用户许可,无法将应用安装到 Android 设备上,除非它与计算机连接用于开发。Google 为应用安装实施的用户隐私/许可政策不允许任何无需用户许可即可安装新应用的应用或设备。但是,可以在没有用户许可的情况下进行频繁的应用升级。

参考: https://support.google.com/a/users/answer/190930?hl=en

https://support.google.com/a/users/answer/2364439?hl=en

注意:- 有一些机制可以在没有用户许可的情况下安装 apk,前提是设备已获得 root 权限。

【讨论】:

  • 感谢您提供的信息。我知道如果设备是rooter,这是可能的,我想知道如果没有这是否可能。
  • @Ancuta 当然不是。您不能只允许第三方应用程序下载和安装随机软件。这将是一个与任意代码执行相当的安全漏洞。它在设备被植根时工作的原因是因为生根禁用了所有这些安全检查,不仅使您的设备容易受到这种攻击,而且还容易受到许多其他攻击。永远不要根您的设备。
  • 这种能力只能用于一件真实的事情:恶意软件。任何真正的用例都不需要这种危险的能力。
  • Amazon App Store 如何能够静默更新 Amazon Instant Video 等应用程序?因为它在没有提示的情况下这样做
  • 所以如果我的设备没有root,我唯一的选择是在google play中发布它以实现自动更新而不显示任何提示?
【解决方案2】:

从另一个开发者 (Palak) 那里尝试这个答案,需要 Root 权限

public static void InstallAPK(String filename){
    File file = new File(filename); 
    if(file.exists()){
        try {   
            String command;
            command = "adb install -r " + filename;
            Process proc = Runtime.getRuntime().exec(new String[] { "su", "-c", command });
            proc.waitFor();
        } catch (Exception e) {
        e.printStackTrace();
        }
     }
  }

他大概拿的也是这个链接http://paulononaka.wordpress.com/2011/07/02/how-to-install-a-application-in-background-on-android/

【讨论】:

  • @BurhanuddinRashid 是的,如果设备没有root,您也可以安装,但您必须是设备所有者。所以一般来说,在非 root 用户设备上是无法完成的
  • 我想知道这是否可以在设备不root的情况下完成。
  • 我有设备管理应用程序,这个命令进入异常显示 Environment=null
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-27
  • 2011-05-15
相关资源
最近更新 更多