像Google Play一样,通过无线静默安装Android应用程序



我需要安装apk文件没有任何用户提示像谷歌的PlayStore做。我知道这个问题已经被问过很多次了,但我仍然没有找到任何可以解决的答案。我只是从我的sd卡安装应用程序,我尝试以下方式,

public void getInstall(Context context) {

        File file = new File(Environment.getExternalStorageDirectory()
                + "/Demo.apk");
        Uri mPackageURI = Uri.fromFile(file);
        ApplicationManager appMgr = null;
        try {
            appMgr = new ApplicationManager(context);
        } catch (SecurityException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        } catch (NoSuchMethodException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
        int installFlags = 1;
        PackageManager pm = context.getPackageManager();
        Method method = null;
        try {
            method = pm.getClass().getMethod(
                    "installPackage",
                    new Class[] { android.net.Uri.class,
                            android.content.pm.IPackageInstallObserver.class,
                            Integer.TYPE, String.class });
        } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (NoSuchMethodException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        String installerPackageName = "com.myapp.demo";
        PackageInstallObserver observer = appMgr.new PackageInstallObserver();
        try {
            method.invoke(pm, new Object[] { mPackageURI, observer,
                    installFlags, installerPackageName });
        } catch (IllegalArgumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

但是我得到错误Neither user 10057 nor current process has android.permission.INSTALL_PACKAGES,即使我在我的清单文件中添加了这个权限。

我的设备没有根,我希望它没有根,在许多答案中,我发现这是不可能的,根据安全原因,他们不允许,但如果它是可能的与PlayStore和AndroidLost应用程序,那么为什么不与我们?

如果可能的话,我需要帮助!

谢谢,

我的设备没有根,我希望它没有根

这是不可能在Android上的第三方应用程序。Google Play能够做到这一点,因为它是安装到/system/app而不是/data/app。如果您可以说服任何OEM或ROM制造商将您的应用程序放在系统分区上,您可以利用INSTALL_PACKAGES权限,因为这只授予系统应用程序。

无论如何,这是一个Android反模式。如果允许你在未经用户同意的情况下任意安装应用程序,这将是一个严重的安全漏洞,用户将不再对设备负责。

相关内容

  • 没有找到相关文章

最新更新