如何检查用户是否通过意图接受了apk的安装?

时间:2017-01-12 06:00:50

标签: android android-intent installation apk

在我的应用程序中,我实现了自我更新,因此只要打开应用程序,它就会将其版本与服务器上的apk版本进行比较。如果有更新,它会从ftp服务器及其版本下载apk。我在共享首选项中存储应用程序的版本。下载apk时,我使用以下代码安装下载的apk:

PackageInfo pInfo = null;
        try {
            pInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), 0);
            String version = pInfo.versionName;
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        Uri uri = Uri.parse("file://" + path);
        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(uri, "application/vnd.android.package-archive");
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
        SharedPreferences.Editor ed = prefs.edit();
        ed.putString("version", String.valueOf(ver));
        ed.apply();

        context.startActivity(intent);

同时我更新SharedPreferences中的值。但是,用户可以拒绝安装,然后安装更新,但更新SharedPreferences中的值。如果用户拒绝安装,有没有办法阻止应用程序的使用?或者我该如何检查他是否接受了安装。

1 个答案:

答案 0 :(得分:0)

  

同时我更新SharedPreferences中的值。但用户   可以拒绝安装,然后更新没有安装但是   SharedPreferences中的值已更新

请求安装新的apk时不要更新版本! 在启动应用程序后更新版本代码,然后您可以检查最新的版本代码以允许或拒绝用户并重新启动安装。

int versionCode = BuildConfig.VERSION_CODE;
String versionName = BuildConfig.VERSION_NAME;