Android版本更新

作者: 我叫mtt | 来源:发表于2018-08-01 16:34 被阅读329次

最近在做更新的接口。发现新应用上架的时候都需要软件版权了。希望各位Android开发者注意啦。

不过之前一直没有做安卓这边7.0以及8.0的更新。表示十分的苦恼。只能说我这个小透明来献丑一番啦。

废话不多说,直接上代码。

 /* 获取本地软件版本号
     */
    public static int getLocalVersion(Context ctx) {

        try {
            PackageInfo packageInfo = ctx.getApplicationContext()
                    .getPackageManager()
                    .getPackageInfo(ctx.getPackageName(), 0);
            localVersion = packageInfo.versionCode;
            DebugLog.d("本软件的版本号。。" + localVersion);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
        return localVersion;
    }

先获取当前的版本号,然后再说其他的。要不然咋地去做对比啊?
接下来要去获取后台存储的版本号啦。
获取到后,判断本地的版本号是否小于后台给的版本号,要是小于那就去走更新下载啦,要是相等的话,那就走其他的页面。

public void getUrl() {
        String http = mSharedPreferences.getString("http", "") + DirectionUrl.UPDATEVERSION;
        XutilsHttp.getInstance().post(http, null, new XCallBack() {//budui
            @Override
            public void onResponse(String result) {
                DebugLog.d(result);
                try {
                    JSONObject jsonObject = new JSONObject(result);
                    final String url = jsonObject.getString("downloadUrl");
                    int code = jsonObject.getInt("versionNumber");
                    if (code > localVersion) {
                        new QMUIDialog.MessageDialogBuilder(WelActivity.this)
                                .setMessage("检测到新版本,请问是否更新?")
                                .addAction("取消", new QMUIDialogAction.ActionListener() {
                                    @Override
                                    public void onClick(QMUIDialog dialog, int index) {
                                        toM();
                                        dialog.dismiss();
                                    }
                                })
                                .addAction("确定", new QMUIDialogAction.ActionListener() {
                                    @Override
                                    public void onClick(QMUIDialog dialog, int index) {
                                        dialog.dismiss();
                                        upadata(url);
                                    }
                                })
                                .create(mCurrentDialogStyle).show();

                    } else {
                        toM();
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }

            }

            @Override
            public void onFail(String errorMsg, String whereRequest) {

            }
        });

    }

激动人心的时刻来了。因为到了正题,哈哈先说7.0的问题。
1、在manifest注册

<provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="你的包名.fileprovider"
            android:grantUriPermissions="true"
            android:exported="false">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_paths" />
        </provider>

2、新建一个xml的文件夹,新建一个file_paths

<paths>
    <external-path
        name="external_storage_root"
        path="."/>
</paths>

再说一下8.0的故事啦。
在manifest加上

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

下面直接安装

  public void installApk(File apkFile) {
        Intent installApkIntent = new Intent();
        installApkIntent.setAction(Intent.ACTION_VIEW);
        installApkIntent.addCategory(Intent.CATEGORY_DEFAULT);
        installApkIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
            installApkIntent.setDataAndType(FileProvider.getUriForFile(getApplicationContext(), "你的包名.fileprovider", apkFile), "application/vnd.android.package-archive");
            installApkIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        } else {
            installApkIntent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");
        }
        if (getPackageManager().queryIntentActivities(installApkIntent, 0).size() > 0) {
            startActivity(installApkIntent);
        }
    }

注意“你的包名.fileprovide”这个地方跟manifest的要一致。
好了,好了。分享完毕···

相关文章

网友评论

本文标题:Android版本更新

本文链接:https://www.haomeiwen.com/subject/sflrvftx.html