zl程序教程

您现在的位置是:首页 >  其它

当前栏目

版本控制

版本控制
2023-09-27 14:27:47 时间
package com.example.liuan.nahaoba;

import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

import java.io.File;

import butterknife.Bind;
import butterknife.ButterKnife;

public class SplashActivity extends AppCompatActivity {

    @Bind(R.id.version_code)
    TextView versionCode;

    @Bind(R.id.version_name)
    TextView versionName;

    @Bind(R.id.activity_main2)
    RelativeLayout activityMain2;
    private boolean isUpdate=true;
    private AlertDialog dialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        ButterKnife.bind(this);

        //版本名字的初始化

        versionName.setText(getVersionName());
        versionCode.setText(getVersionCode()+"");

        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
               if(isUpdate){
                   checkVersion();
               } else{
                   //无论成功或者失败 都要跳转到主页面
                   enterHome();
               }
            }
        },2000);
        Intent intent = new Intent();
        intent.setAction("android.intent.action.VIEW");
        // intent.setAction(Intent.ACTION_VIEW);
        intent.addCategory("android.intent.category.DEFAULT");
        // intent.addCategory(Intent.CATEGORY_DEFAULT);
        Uri uri = Uri.fromFile(new File("apk路径"));// 要安装数据的uri
        intent.setDataAndType(uri, "application/vnd.android.package-archive");
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        // 跳转安装页面
        startActivityForResult(intent, 11);

    }

    private void enterHome() {
    }

    private void checkVersion() {
           //联网获取数据 看看是否有新版本
        int 服务器版本=2;
        if(getVersionCode()<服务器版本){
showUpdateDialog();
        }else{
        enterHome();}
    }

    private void showUpdateDialog() {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("版本更新提示");
        builder.setMessage("是否要更新成新的版本号呢");
//  让取消不可以用 垃圾软件很多在使用
 builder.setCancelable(false);
        builder.setPositiveButton("更新", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(SplashActivity.this, "下载app的逻辑", Toast.LENGTH_SHORT).show();
                downLoadApk();
            }
        });
        builder.setNegativeButton("不用了", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                enterHome();
            }
        });
        dialog = builder.create();
        dialog.show();

    }

    private void downLoadApk() {
        if (!Environment.getExternalStorageState().equals(
                Environment.MEDIA_MOUNTED)) {
            Toast.makeText(getApplicationContext(), "sd卡异常", Toast.LENGTH_SHORT).show();
            // 进主页面
            enterHome();
            return;
        }

    }

    private String getVersionName() {
        //包管理器 可以获取清单文件信息
        PackageManager packageManager = getPackageManager();
        try {
            PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0);
            return packageInfo.versionName;
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
//防止空指针异常
        return "";
    }

    private int getVersionCode() {
        //包管理器 可以获取清单文件信息
        PackageManager packageManager = getPackageManager();
        try {
            PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0);
            return packageInfo.versionCode;
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }
//防止空指针异常
        return 0;
    }
}