通过APK下载更新应用(使用网址),但不显示打开/完成屏幕

时间:2019-01-10 12:02:48

标签: android android-install-apk

我正在尝试通过下载updateapk应用添加选项,安装成功。但是问题是,应用在安装后关闭,而没有在牛轧糖上方设备中提示打开/完成屏幕。

Open/Done Screen

我尝试同时使用ACTION_VIEWACTION_INSTALL_PACKAGE,但是没有运气。也尝试用startActivityForResult代替startActivity,仍然没有运气。

public void installAPK() {
        Intent intent = new Intent(Intent.ACTION_INSTALL_PACKAGE);
        File file = new File(path + "update.apk");

        if (Build.VERSION.SDK_INT < 24) {
            intent.setDataAndType(Uri.fromFile(new File(path + "update.apk")), "application/vnd.android.package-archive");
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // without this flag android returned a intent error!
        } else {

            Uri apkURI = FileProvider.getUriForFile(
                    activity,
                    activity.getApplicationContext()
                            .getPackageName() + ".provider", file);
            intent.setDataAndType(apkURI, "application/vnd.android.package-archive");
            intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        }
        intent.putExtra(Intent.EXTRA_NOT_UNKNOWN_SOURCE, true);
        activity.startActivityForResult(intent, RC_INSTALL_APK);
    }

我错过了做什么?

1 个答案:

答案 0 :(得分:1)

这是我打开新版本的应用方法的示例代码

 void OpenNewVersion(String location) {
    Intent downloadIntent;
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
        String PATH = Environment.getExternalStorageDirectory() + "/Download/";

        File fileLocation = new File(PATH, "app-stock.apk");
        Uri apkUri = FileProvider.getUriForFile(this,  "Adapters.GenericFileProvider", fileLocation);

        downloadIntent = new Intent(Intent.ACTION_VIEW);
        downloadIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        downloadIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        downloadIntent.setDataAndType(apkUri, "application/vnd.android.package-archive");

        List<ResolveInfo> resInfoList = this.getPackageManager().queryIntentActivities(downloadIntent, PackageManager.MATCH_DEFAULT_ONLY);
        for (ResolveInfo resolveInfo : resInfoList) {
            String packageName = resolveInfo.activityInfo.packageName;
            this.grantUriPermission(packageName, apkUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
        }

    } else {
        File fileLocation = new File(this.getFilesDir(), "app-stock.apk");
        downloadIntent = new Intent(Intent.ACTION_VIEW);
        downloadIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        downloadIntent.setDataAndType(Uri.fromFile(fileLocation), "application/vnd.android.package-archive");
    }
    this.startActivity(downloadIntent);

}