package com.hjx.parent; import android.app.Dialog; import android.app.ProgressDialog; import android.content.Intent; import android.graphics.Color; import android.net.Uri; import android.os.Build; import android.os.Looper; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import androidx.constraintlayout.widget.ConstraintLayout; import androidx.core.content.FileProvider; import com.google.gson.JsonObject; import com.hjq.permissions.OnPermissionCallback; import com.hjq.permissions.Permission; import com.hjq.permissions.XXPermissions; import com.hjx.parent.dialog.TipDialog; import com.hjx.parent.fragment.ErrorFragment; import com.hjx.parent.fragment.HomeFragment; import com.hjx.parent.fragment.MeFragment; import com.hjx.parent.fragment.TeacherFragment; import com.prws.common.base.BaseActivity; import com.prws.common.base.BasePresenter; import com.prws.common.bean.GradeAndSubject; import com.prws.common.bean.ResponseResult; import com.prws.common.bean.UpdateBean; import com.prws.common.net.NetWorks; import com.prws.common.utils.DownloadUtil; import com.prws.common.utils.SharedPreferencesUtil; import java.io.File; import java.util.List; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; public class TeacherMainActivity extends BaseActivity { @Override protected int layoutResId() { return R.layout.activity_main; } @Override public Object getContract() { return null; } @Override public BasePresenter getPresenter() { return null; } ErrorFragment errorFragment; TeacherFragment meFragment; ConstraintLayout cl_home; ConstraintLayout cl_me; ImageView iv_3, iv_4; TextView tv_1, tv_4; @Override protected void initView() { blackBar(); showFragment(getErrorFragment(), R.id.rl_content); cl_home = findViewById(R.id.cl_home); cl_me = findViewById(R.id.cl_me); iv_3 = findViewById(R.id.iv_3); iv_4 = findViewById(R.id.iv_4); tv_1 = findViewById(R.id.tv_1); tv_4 = findViewById(R.id.tv_4); iv_3.setBackgroundResource(R.mipmap.hoss); tv_1.setTextColor(Color.parseColor("#FE5E09")); NetWorks.getBaiduToken(new Observer() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(JsonObject jsonObject) { SharedPreferencesUtil.putData("baiduToken", jsonObject.get("access_token").getAsString()); } @Override public void onError(Throwable e) { } @Override public void onComplete() { } }); NetWorks.listGradeAndSubject(new Observer>>() { @Override public void onSubscribe(Disposable d) { } @Override public void onNext(ResponseResult> listResponseResult) { App.getInstance().setGradeAndSubjects(listResponseResult.getData()); } @Override public void onError(Throwable e) { e.toString(); } @Override public void onComplete() { } }); checkUpdate(); } public ErrorFragment getErrorFragment() { if (errorFragment == null) errorFragment = new ErrorFragment(); return errorFragment; } public TeacherFragment getMeFragment() { if (meFragment == null) meFragment = new TeacherFragment(); return meFragment; } @Override protected void initListener() { cl_home.setOnClickListener(view -> { showFragment(getErrorFragment(), R.id.rl_content); iv_3.setBackgroundResource(R.mipmap.hoss); tv_1.setTextColor(Color.parseColor("#1C90F3")); iv_4.setBackgroundResource(R.mipmap.wmus); tv_4.setTextColor(Color.parseColor("#333333")); }); cl_me.setOnClickListener(view -> { showFragment(getMeFragment(), R.id.rl_content); iv_3.setBackgroundResource(R.mipmap.hous); tv_1.setTextColor(Color.parseColor("#333333")); iv_4.setBackgroundResource(R.mipmap.wmss); tv_4.setTextColor(Color.parseColor("#1C90F3")); }); } @Override protected void initData() { } @Override public void onNetChanged(int netWorkState) { } public void downloadApk(String url, int versionCode) { String filepath = getExternalFilesDir("apk").getPath() + "/" + versionCode + ".apk"; ProgressDialog dialog = new ProgressDialog(this); dialog.setTitle("版本更新"); dialog.setMessage("正在下载新版本,请稍后"); dialog.setMax(100); dialog.setProgress(0); dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); dialog.show(); DownloadUtil.download(url, filepath, new DownloadUtil.OnDownloadListener() { @Override public void onDownloadSuccess(String path) { dialog.setProgress(100); dialog.dismiss(); installApk(filepath); } @Override public void onDownloading(int progress) { dialog.setProgress(progress); } @Override public void onDownloadFailed(String msg) { dialog.dismiss(); Looper.prepare(); showToast("下载失败。"); Looper.loop(); } }); } public void installApk(String path) { //开启扫码界面 Intent intentUpdate = new Intent("android.intent.action.VIEW"); intentUpdate.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //对Android N及以上的版本做判断 Uri apkUriN = FileProvider.getUriForFile(TeacherMainActivity.this, getApplicationContext().getPackageName() + ".fileprovider", new File(path)); intentUpdate.addCategory("android.intent.category.DEFAULT"); intentUpdate.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); //天假Flag 表示我们需要什么权限 intentUpdate.setDataAndType(apkUriN, "application/vnd.android.package-archive"); } else { Uri apkUri = Uri.fromFile(new File(path)); intentUpdate.setDataAndType(apkUri, "application/vnd.android.package-archive"); } startActivity(intentUpdate); } public void checkUpdate() { NetWorks.checkUpdate(BuildConfig.VERSION_CODE, BuildConfig.APPLICATION_ID, new Callback>() { @Override public void onResponse(Call> call, Response> response) { if (response.body() != null && response.body().getCode() == 200) { if (response.body().getData() != null) { String msg = response.body().getData().getExplain(); String url = response.body().getData().getUrl(); int versionCode = response.body().getData().getVersion(); showUpdateDialog(msg, url, versionCode); } } } @Override public void onFailure(Call> call, Throwable t) { } }); } public void showUpdateDialog(String msg, String url, int versionCode) { TipDialog tipDialog = new TipDialog(this, "检测到新版本", msg, "升级", "取消", new TipDialog.TipDialogInterface() { @Override public void onConfirm(Dialog dialog) { if (!XXPermissions.isGranted(TeacherMainActivity.this, Permission.MANAGE_EXTERNAL_STORAGE)) { XXPermissions.with(TeacherMainActivity.this) // 申请多个权限 .permission(Permission.MANAGE_EXTERNAL_STORAGE) .request(new OnPermissionCallback() { @Override public void onGranted(List permissions, boolean all) { if (all) { //开启扫码界面 downloadApk(url, versionCode); } else { Toast.makeText(TeacherMainActivity.this, "需要权限", Toast.LENGTH_SHORT).show(); } } @Override public void onDenied(List permissions, boolean never) { XXPermissions.startPermissionActivity(TeacherMainActivity.this, permissions); } }); } else { downloadApk(url, versionCode); } } @Override public void onCancel(Dialog dialog) { dialog.dismiss(); } }); tipDialog.show(); } }