在我的应用程序中,我实现了自我更新,因此只要打开应用程序,它就会将其版本与服务器上的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中的值。如果用户拒绝安装,有没有办法阻止应用程序的使用?或者我该如何检查他是否接受了安装。
答案 0 :(得分:0)
同时我更新SharedPreferences中的值。但用户 可以拒绝安装,然后更新没有安装但是 SharedPreferences中的值已更新
请求安装新的apk时不要更新版本! 在启动应用程序后更新版本代码,然后您可以检查最新的版本代码以允许或拒绝用户并重新启动安装。
int versionCode = BuildConfig.VERSION_CODE;
String versionName = BuildConfig.VERSION_NAME;