diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/MainActivity.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/MainActivity.java index 2ec1eac28..54f40f7e6 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/MainActivity.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/MainActivity.java @@ -13,6 +13,7 @@ import com.alibaba.fastjson.JSONObject; import com.angcyo.tablayout.DslTabLayout; import com.angcyo.tablayout.DslTabLayoutConfig; import com.angcyo.tablayout.delegate2.ViewPager2Delegate; +import com.lxj.xpopup.XPopup; import com.shayu.onetoone.R; import com.shayu.onetoone.activity.fragments.BaseFragment; import com.shayu.onetoone.activity.fragments.DynamicFragment; @@ -31,13 +32,21 @@ import com.shayu.onetoone.manager.CallClientManager; import com.shayu.onetoone.manager.OTONetManager; import com.shayu.onetoone.manager.RouteManager; import com.shayu.onetoone.manager.SendMessageManager; +import com.yunbao.common.CommonAppConfig; +import com.yunbao.common.bean.ConfigBean; import com.yunbao.common.http.base.HttpCallback; +import com.yunbao.common.interfaces.CommonCallback; import com.yunbao.common.interfaces.OnItemClickListener; +import com.yunbao.common.manager.APKManager; import com.yunbao.common.manager.IMLoginManager; import com.yunbao.common.manager.imrongcloud.RongcloudIMManager; import com.yunbao.common.utils.Bus; +import com.yunbao.common.utils.DialogUitl; import com.yunbao.common.utils.SpUtil; import com.yunbao.common.utils.ToastUtil; +import com.yunbao.common.utils.VersionUtil; +import com.yunbao.common.views.APKUpdateCustomPopup; +import com.yunbao.common.views.APKUpdateOneToOnePopup; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; @@ -118,6 +127,35 @@ public class MainActivity extends AbsOTOActivity { } }); CallClientManager.getManager(); + checkVersion(); + } + + /** + * 检查版本更新 + */ + private void checkVersion() { + CommonAppConfig.getInstance().getConfig(new CommonCallback() { + @Override + public void callback(ConfigBean configBean) { + if (configBean != null) { + if (configBean.getMaintainSwitch() == 1) {//开启维护 + DialogUitl.showSimpleTipDialog(mContext, mContext.getString(R.string.main_maintain_notice), configBean.getMaintainTips()); + } + if (!VersionUtil.isLatest(configBean.getVersion())) { + if (!APKManager.get().getApkVerNew()) { + new XPopup.Builder(mContext) + .isDestroyOnDismiss(true) + .dismissOnBackPressed(false) // 按返回键是否关闭弹窗,默认为true + .dismissOnTouchOutside(false) // 点击外部是否关闭弹窗,默认为true + .asCustom(new APKUpdateOneToOnePopup(MainActivity.this, false)) + .show(); + } + } else { + //requestBonus(); + } + } + } + }); } private void initFirstLoginTips() { diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/user/AuthBloggerInletActivity.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/user/AuthBloggerInletActivity.java index 7549b160e..e3998cc4d 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/user/AuthBloggerInletActivity.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/user/AuthBloggerInletActivity.java @@ -53,7 +53,6 @@ public class AuthBloggerInletActivity extends AbsActivity { dialog = DialogUitl.loadingDialog(mContext, WordUtil.getNewString(R.string.query)); - getAuthInfo(); } AuthBean authBean; @@ -92,7 +91,7 @@ public class AuthBloggerInletActivity extends AbsActivity { }); } else { personLayout.setBackground(getResources().getDrawable(R.drawable.bg_auth_submit_1)); - personImg.setImageDrawable(getResources().getDrawable(R.mipmap.icon_suc)); + personImg.setImageDrawable(getResources().getDrawable(R.mipmap.icon_fail)); perStatus.setText(R.string.to_upload); perStatus.setBackground(getResources().getDrawable(R.drawable.bg_auth_submit_5)); findViewById(R.id.personBt).setOnClickListener(new View.OnClickListener() { @@ -167,8 +166,6 @@ public class AuthBloggerInletActivity extends AbsActivity { @Override protected void onResume() { super.onResume(); - if (Constants.isShowPage != -1) { - finish(); - } + getAuthInfo(); } } diff --git a/OneToOne/src/main/res/layout/activity_auth_blogger.xml b/OneToOne/src/main/res/layout/activity_auth_blogger.xml index a1c87d0f1..c579b9882 100644 --- a/OneToOne/src/main/res/layout/activity_auth_blogger.xml +++ b/OneToOne/src/main/res/layout/activity_auth_blogger.xml @@ -339,6 +339,8 @@ android:layout_marginTop="20dp" android:layout_marginRight="70dp" android:layout_marginBottom="20dp" + android:paddingLeft="10dp" + android:paddingRight="10dp" android:background="@drawable/bg_auth_submit_1" android:gravity="center" android:paddingTop="10dp" diff --git a/common/src/main/java/com/yunbao/common/views/APKUpdateOneToOnePopup.java b/common/src/main/java/com/yunbao/common/views/APKUpdateOneToOnePopup.java new file mode 100644 index 000000000..45c682b5d --- /dev/null +++ b/common/src/main/java/com/yunbao/common/views/APKUpdateOneToOnePopup.java @@ -0,0 +1,208 @@ +package com.yunbao.common.views; + +import android.app.Activity; +import android.content.Context; +import android.content.Intent; +import android.net.Uri; +import android.os.Build; +import android.os.Handler; +import android.os.Looper; +import android.widget.LinearLayout; +import android.widget.ProgressBar; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.core.content.FileProvider; + +import com.lxj.xpopup.core.CenterPopupView; +import com.yunbao.common.CommonAppConfig; +import com.yunbao.common.CommonAppContext; +import com.yunbao.common.R; +import com.yunbao.common.manager.APKManager; +import com.yunbao.common.utils.APKDownloadUtil; +import com.yunbao.common.utils.RouteUtil; +import com.yunbao.common.utils.ToastUtil; +import com.yunbao.common.views.weight.ViewClicksAntiShake; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; + +import okhttp3.Call; +import okhttp3.Callback; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; + +/** + * apk更新弹窗 + */ +public class APKUpdateOneToOnePopup extends CenterPopupView { + private TextView updateText, versionImmediateUse, no_update; + private Activity mContext; + private boolean mInside; + + public APKUpdateOneToOnePopup(@NonNull Activity context, boolean inside) { + super(context); + mContext = context; + mInside = inside; + } + + // 返回自定义弹窗的布局 + @Override + protected int getImplLayoutId() { + return R.layout.apk_update_one_to_one_popup; + } + + // 执行初始化操作,比如:findView,设置点击,或者任何你弹窗内的业务逻辑 + @Override + protected void onCreate() { + super.onCreate(); + initView(); + initData(); + } + + private void initData() { + + } + + private void initView() { + if (!mInside) { + if (!CommonAppConfig.IS_GOOGLE_PLAY && APKManager.get().getAPKGoogleIsUp() == 1) { + findViewById(R.id.dialog_close).setVisibility(GONE); + } + if (!CommonAppConfig.IS_GOOGLE_PLAY && APKManager.get().getAPKGoogleIsUp() == 1) { + findViewById(R.id.dialog_close).setVisibility(GONE); + } + } + no_update = findViewById(R.id.no_update); + updateText = findViewById(R.id.update_text); + versionImmediateUse = findViewById(R.id.version_immediate_use); + versionImmediateUse.setVisibility(VISIBLE); + updateText.setText(APKManager.get().getAPKDes()); + ViewClicksAntiShake.clicksAntiShake(versionImmediateUse, new ViewClicksAntiShake.ViewClicksCallBack() { + @Override + public void onViewClicks() { + //不是谷歌 + if (!CommonAppConfig.IS_GOOGLE_PLAY) { + versionImmediateUse.setVisibility(GONE); + no_update.setEnabled(false); + downloadAPK(mContext, APKManager.get().getAPKUrl(), new APKDownloadUtil.OnUpdateListener() { + @Override + public void updateFailure(int code, String error) { + no_update.setEnabled(true); + ToastUtil.show(error); + } + }); + } else { + Intent i = new Intent(Intent.ACTION_VIEW); + i.setData(Uri.parse("https://play.google.com/store/apps/details?id=com.pdlive.shayu")); + mContext.startActivity(i); + mContext.finish(); + } + + } + }); + + ViewClicksAntiShake.clicksAntiShake(no_update, new ViewClicksAntiShake.ViewClicksCallBack() { + @Override + public void onViewClicks() { + mContext.finish(); + } + }); + + } + + public void downloadAPK(Activity context, String url, APKDownloadUtil.OnUpdateListener listener) { + Request request = new Request.Builder().url(url).addHeader("Accept-Encoding", "identity").build(); + File downloadFile = new File(context.getCacheDir(), "update_app.apk"); + try { + if (!downloadFile.exists() && !downloadFile.createNewFile()) { + return; + } + } catch (IOException e) { + e.printStackTrace(); + } + new OkHttpClient().newCall(request).enqueue(new Callback() { + private Handler handler = new Handler(); + + @Override + public void onFailure(Call call, IOException e) { + // 下载失败 + handler.post(() -> { + listener.updateFailure(-1, e.getMessage()); + dismiss(); + }); + } + + @Override + public void onResponse(Call call, Response response) { + Looper.prepare(); + byte[] buf = new byte[2048]; + int len; + try (InputStream inputStream = response.body().byteStream(); FileOutputStream outputStream = new FileOutputStream(downloadFile)) { + long total = response.body().contentLength(); + long sum = 0; + while ((len = inputStream.read(buf)) != -1) { + outputStream.write(buf, 0, len); + sum += len; + int progress = (int) (sum * 1.0f / total * 100); + // 下载中 + handler.post(new Runnable() { + @Override + public void run() { + no_update.setText("正在下載,請稍後.." + progress + "%"); + } + }); + } + outputStream.flush(); + //启动安装app + installApk(context, downloadFile, context.getPackageName() + ".fileprovider"); + handler.post(() -> dismiss()); + } catch (Exception e) { + e.printStackTrace(); + new Handler().post(() -> { + listener.updateFailure(-1, e.getMessage()); + dismiss(); + }); + } + } + }); + } + + /** + * 安装apk + * + * @param context + * @param file + */ + public void installApk(Context context, File file, String authority) { + Intent intent = getInstallIntent(context, file, authority); + context.startActivity(intent); + } + + /** + * 获取安装Intent + * + * @param context + * @param file + * @param authority + * @return + */ + public Intent getInstallIntent(Context context, File file, String authority) { + Intent intent = new Intent(Intent.ACTION_VIEW); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + intent.addCategory(Intent.CATEGORY_DEFAULT); + Uri uriData; + String type = "application/vnd.android.package-archive"; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + uriData = FileProvider.getUriForFile(context, authority, file); + } else { + uriData = Uri.fromFile(file); + } + intent.setDataAndType(uriData, type); + return intent; + } +} diff --git a/common/src/main/res/layout/apk_update_one_to_one_popup.xml b/common/src/main/res/layout/apk_update_one_to_one_popup.xml new file mode 100644 index 000000000..0c72b6c10 --- /dev/null +++ b/common/src/main/res/layout/apk_update_one_to_one_popup.xml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/common/src/main/res/mipmap-mdpi/update_one_to_one_bt.png b/common/src/main/res/mipmap-mdpi/update_one_to_one_bt.png new file mode 100644 index 000000000..8ac00b8ba Binary files /dev/null and b/common/src/main/res/mipmap-mdpi/update_one_to_one_bt.png differ diff --git a/common/src/main/res/mipmap-xxhdpi/update_tips_bos_one_to_one.png b/common/src/main/res/mipmap-xxhdpi/update_tips_bos_one_to_one.png new file mode 100644 index 000000000..2592281a2 Binary files /dev/null and b/common/src/main/res/mipmap-xxhdpi/update_tips_bos_one_to_one.png differ