【问题标题】:How to install an apk once downloaded in app, or pop up requesting install?在应用程序中下载后如何安装apk,或弹出请求安装?
【发布时间】:2021-07-05 14:54:28
【问题描述】:

我创建了一个 html 页面,其中包含列出 android apk 的表格。

我还有一个显示 html 页面的 APK,当单击下载按钮时,它会下载所选的 APK...完美!

我想要做的是,一旦下载完成,它就会请求安装应用程序。

我已经尝试了一些东西,但我做的太多了,有人介意帮忙换一些啤酒代币吗,

谢谢

【问题讨论】:

    标签: android html installation download apk


    【解决方案1】:

    您可以在下载完成时添加BroadcastReceiver 作为回调,然后在该回调中调用以下方法-

    public static void installapk(File apkFile, Context context) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                if (apkFile.exists()) {
                    Intent install = new Intent(Intent.ACTION_VIEW);
                    install.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                        install.setDataAndType(Uri.fromFile(apkFile),
                                "application/vnd.android.package-archive");
                        Uri apkUri =
                                FileProvider.getUriForFile(context, "com.yourcompany.yourapp.fileprovider", apkFile);
                        install.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                        install.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
                        install.setDataAndType(apkUri, "application/vnd.android.package-archive");
                        context.startActivity(install);
    
                    } else {
                        install.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                        install.setDataAndType(Uri.fromFile(apkFile),
                                "application/vnd.android.package-archive");
                        context.startActivity(install);
                    }
                } else {
                    System.out.println("apk doesnot exist.");
                }
            }
        }
    

    不要忘记在您的 AndroidManifest.xml 文件中添加此权限 -

    <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
    

    你还需要在你的AndroidManifest.xml中创建一个fileprovider authority -

    <provider
                android:name="androidx.core.content.FileProvider"
                android:authorities="${applicationId}.fileProvider"
                android:exported="false"
                android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths"/>
            </provider>
    

    然后在 res/xml 文件夹中创建一个名为 file_paths.xml 的新 xml 文件并粘贴此代码 -

    <?xml version="1.0" encoding="utf-8"?>
    <paths>
        <external-path
            name="external"
            path="." />
        <external-files-path
            name="external_files"
            path="." />
        <files-path
            name="files"
            path="." />
    </paths>
    

    编码愉快!

    【讨论】:

      猜你喜欢
      • 2016-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-28
      • 1970-01-01
      • 1970-01-01
      • 2018-08-19
      相关资源
      最近更新 更多