From 6b7ff824ca1af2dff5fb2cc8cdc5f36db81badbc Mon Sep 17 00:00:00 2001 From: HuanCheng65 <609486518@qq.com> Date: Fri, 3 Jun 2022 20:05:29 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=8F=91=E8=B4=B4/=E5=9B=9E=E8=B4=B4?= =?UTF-8?q?=E5=89=8D=E6=8F=90=E7=A4=BA=E9=A3=8E=E9=99=A9=E3=80=81=E8=B7=B3?= =?UTF-8?q?=E8=BD=AC=E5=AE=98=E6=96=B9=20App?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 5 ++ .../tieba/post/activities/ForumActivity.kt | 54 ++++++++++++++++--- .../tieba/post/activities/ReplyActivity.kt | 36 ++++++++++++- .../tieba/post/activities/ThreadActivity.kt | 8 +-- .../tieba/post/utils/AppPreferencesUtils.kt | 2 + .../tieba/post/utils/DispatchUtils.kt | 9 ++++ .../tieba/post/utils/PackageUtils.kt | 13 +++++ .../main/res/drawable/ic_round_warning.xml | 5 +- app/src/main/res/values/strings.xml | 18 +++++-- app/src/main/res/xml/preferences.xml | 6 +++ 10 files changed, 139 insertions(+), 17 deletions(-) create mode 100644 app/src/main/java/com/huanchengfly/tieba/post/utils/DispatchUtils.kt create mode 100644 app/src/main/java/com/huanchengfly/tieba/post/utils/PackageUtils.kt diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c185eacf..6b0191b8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -25,6 +25,11 @@ + + + + + { - if ("0" != mDataBean!!.anti?.ifPost) { - NavigationHelper.newInstance(this).navigationByData(NavigationHelper.ACTION_THREAD_POST, forumName) - } else { - if (!TextUtils.isEmpty(mDataBean!!.anti?.forbidInfo)) { - Toast.makeText(this, mDataBean!!.anti?.forbidInfo, Toast.LENGTH_SHORT).show() + if (appPreferences.postOrReplyWarning) { + showDialog { + setTitle(R.string.title_thread_post_recommend) + setMessage(R.string.message_thread_post_recommend) + setNegativeButton(R.string.btn_cancel_post, null) + setNeutralButton(R.string.btn_continue_post) { _, _ -> + launchPost() + } + setPositiveButton(R.string.button_official_client_post) { _, _ -> + try { + if (isOfficialClientInstalled()) { + startActivity( + Intent(Intent.ACTION_VIEW).setData( + Uri.parse( + "com.baidu.tieba://unidispatch/frs?obj_locate=frs_top_diverse&obj_source=wise&obj_name=index&obj_param2=chrome&has_token=0&qd=scheme&refer=tieba.baidu.com&wise_sample_id=3000232_2&fr=bpush&kw=$forumName" + ) + ) + ) + } else { + toastShort(R.string.toast_official_client_not_install) + } + } catch (e: ActivityNotFoundException) { + toastShort(R.string.toast_official_client_not_install) + } + finish() + } } + } else { + launchPost() } } } @@ -475,7 +500,14 @@ class ForumActivity : BaseActivity(), View.OnClickListener, OnRefreshedListener, override fun onResponse(call: Call, response: Response) { mDataBean!!.forum?.isLike = "1" - Toast.makeText(this@ForumActivity, getString(R.string.toast_like_success, response.body()!!.info?.memberSum), Toast.LENGTH_SHORT).show() + Toast.makeText( + this@ForumActivity, + getString( + R.string.toast_like_success, + response.body()!!.info?.memberSum + ), + Toast.LENGTH_SHORT + ).show() refreshHeaderView() refreshForumInfo() } @@ -485,6 +517,16 @@ class ForumActivity : BaseActivity(), View.OnClickListener, OnRefreshedListener, } } + private fun launchPost() { + if ("0" != mDataBean!!.anti?.ifPost) { + WebViewActivity.launch(this, "https://tieba.baidu.com/mo/q/thread_post?word=$forumName") + } else { + if (!TextUtils.isEmpty(mDataBean!!.anti?.forbidInfo)) { + Toast.makeText(this, mDataBean!!.anti?.forbidInfo, Toast.LENGTH_SHORT).show() + } + } + } + private fun getNumStr(num: String): String { val long = num.toLong() if (long > 9999) { diff --git a/app/src/main/java/com/huanchengfly/tieba/post/activities/ReplyActivity.kt b/app/src/main/java/com/huanchengfly/tieba/post/activities/ReplyActivity.kt index f82c9dac..367538b2 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/activities/ReplyActivity.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/activities/ReplyActivity.kt @@ -1,8 +1,11 @@ package com.huanchengfly.tieba.post.activities import android.annotation.SuppressLint +import android.content.ActivityNotFoundException import android.content.Intent +import android.content.Intent.ACTION_VIEW import android.graphics.Color +import android.net.Uri import android.os.Bundle import android.text.Editable import android.text.TextUtils @@ -41,13 +44,13 @@ import com.huanchengfly.tieba.post.interfaces.UploadCallback import com.huanchengfly.tieba.post.models.PhotoInfoBean import com.huanchengfly.tieba.post.models.ReplyInfoBean import com.huanchengfly.tieba.post.models.database.Draft +import com.huanchengfly.tieba.post.toastShort import com.huanchengfly.tieba.post.utils.* import com.huanchengfly.tieba.post.widgets.edittext.widget.UndoableEditText import com.huanchengfly.tieba.post.widgets.theme.TintConstraintLayout import com.huanchengfly.tieba.post.widgets.theme.TintImageView import com.zhihu.matisse.Matisse import org.litepal.LitePal.where -import java.util.* class ReplyActivity : BaseActivity(), View.OnClickListener { @BindView(R.id.activity_reply_edit_text) @@ -107,6 +110,37 @@ class ReplyActivity : BaseActivity(), View.OnClickListener { window.setBackgroundDrawableResource(R.drawable.bg_trans) initData() initView() + if (appPreferences.postOrReplyWarning) showDialog { + setTitle(R.string.title_dialog_reply_warning) + setMessage(R.string.message_dialog_reply_warning) + setNegativeButton(R.string.btn_cancel_reply) { _, _ -> + finish() + } + setNeutralButton(R.string.btn_continue_reply, null) + setPositiveButton(R.string.button_official_client_reply) { _, _ -> + try { + if (isOfficialClientInstalled()) { + startActivity(Intent(ACTION_VIEW).setData(getDispatchUri())) + } else { + toastShort(R.string.toast_official_client_not_install) + } + } catch (e: ActivityNotFoundException) { + toastShort(R.string.toast_official_client_not_install) + } + finish() + } + } + } + + private fun getDispatchUri(): Uri? { + if (replyInfoBean == null) { + return null + } + return if (replyInfoBean!!.pid != null) { + Uri.parse("com.baidu.tieba://unidispatch/pb?obj_locate=comment_lzl_cut_guide&obj_source=wise&obj_name=index&obj_param2=chrome&has_token=0&qd=scheme&refer=tieba.baidu.com&wise_sample_id=3000232_2&hightlight_anchor_pid=${replyInfoBean!!.pid}&is_anchor_to_comment=1&comment_sort_type=0&fr=bpush&tid=${replyInfoBean!!.threadId}") + } else { + Uri.parse("com.baidu.tieba://unidispatch/pb?obj_locate=pb_reply&obj_source=wise&obj_name=index&obj_param2=chrome&has_token=0&qd=scheme&refer=tieba.baidu.com&wise_sample_id=3000232_2-99999_9&fr=bpush&tid=${replyInfoBean!!.threadId}") + } } private fun destroyWebView() { diff --git a/app/src/main/java/com/huanchengfly/tieba/post/activities/ThreadActivity.kt b/app/src/main/java/com/huanchengfly/tieba/post/activities/ThreadActivity.kt index e7b1cc2e..59f03e59 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/activities/ThreadActivity.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/activities/ThreadActivity.kt @@ -749,14 +749,16 @@ class ThreadActivity : BaseActivity(), View.OnClickListener, IThreadMenuFragment } } - fun invalidateAgreeStatus() { + private fun invalidateAgreeStatus() { val color = ThemeUtils.getColorByAttr(this, R.attr.colorAccent) if (agreeBtn.imageTintList != null) { val agreeBtnAnimator: ValueAnimator val agreeNumAnimator: ValueAnimator if (agree) { - agreeNumAnimator = colorAnim(agreeNumTextView, ThemeUtil.getTextColor(this@ThreadActivity), color) - agreeBtnAnimator = colorAnim(agreeBtn, ThemeUtil.getTextColor(this@ThreadActivity), color) + agreeNumAnimator = + colorAnim(agreeNumTextView, ThemeUtil.getTextColor(this@ThreadActivity), color) + agreeBtnAnimator = + colorAnim(agreeBtn, ThemeUtil.getTextColor(this@ThreadActivity), color) agreeNumAnimator.addListener(object : AnimatorListenerAdapter() { override fun onAnimationEnd(animation: Animator) { agreeNumTextView.setTextColor(color) diff --git a/app/src/main/java/com/huanchengfly/tieba/post/utils/AppPreferencesUtils.kt b/app/src/main/java/com/huanchengfly/tieba/post/utils/AppPreferencesUtils.kt index 78010b8a..18910401 100644 --- a/app/src/main/java/com/huanchengfly/tieba/post/utils/AppPreferencesUtils.kt +++ b/app/src/main/java/com/huanchengfly/tieba/post/utils/AppPreferencesUtils.kt @@ -81,6 +81,8 @@ open class AppPreferencesUtils(context: Context) { key = "oksign_slow_mode" ) + var postOrReplyWarning by SharedPreferenceDelegates.boolean(defaultValue = true) + var radius by SharedPreferenceDelegates.int(defaultValue = 8) var signDay by SharedPreferenceDelegates.int(defaultValue = -1, key = "sign_day") diff --git a/app/src/main/java/com/huanchengfly/tieba/post/utils/DispatchUtils.kt b/app/src/main/java/com/huanchengfly/tieba/post/utils/DispatchUtils.kt new file mode 100644 index 00000000..d1bb7d80 --- /dev/null +++ b/app/src/main/java/com/huanchengfly/tieba/post/utils/DispatchUtils.kt @@ -0,0 +1,9 @@ +package com.huanchengfly.tieba.post.utils + +import com.huanchengfly.tieba.post.BaseApplication + +val officialClientPackages = arrayOf("com.baidu.tieba", "com.baidu.tieba_mini") + +fun isOfficialClientInstalled(): Boolean { + return BaseApplication.instance.isAnyPackageInstalled(officialClientPackages) +} \ No newline at end of file diff --git a/app/src/main/java/com/huanchengfly/tieba/post/utils/PackageUtils.kt b/app/src/main/java/com/huanchengfly/tieba/post/utils/PackageUtils.kt new file mode 100644 index 00000000..bb568a2c --- /dev/null +++ b/app/src/main/java/com/huanchengfly/tieba/post/utils/PackageUtils.kt @@ -0,0 +1,13 @@ +package com.huanchengfly.tieba.post.utils + +import android.content.Context + +fun Context.isPackageInstalled(packageName: String): Boolean { + return packageManager.getPackageInfo(packageName, 0) != null +} + +fun Context.isAnyPackageInstalled(packages: Array): Boolean { + return packages.any { + isPackageInstalled(it) + } +} diff --git a/app/src/main/res/drawable/ic_round_warning.xml b/app/src/main/res/drawable/ic_round_warning.xml index bfe37983..659345f4 100644 --- a/app/src/main/res/drawable/ic_round_warning.xml +++ b/app/src/main/res/drawable/ic_round_warning.xml @@ -2,8 +2,9 @@ android:width="24dp" android:height="24dp" android:viewportWidth="24" - android:viewportHeight="24"> + android:viewportHeight="24" + android:tint="?attr/colorControlNormal"> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 130b4668..460e20b2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -401,12 +401,7 @@ 签到失败 请先登录 正在检查更新 - 建议您使用其他途径发贴 - 继续使用本软件发贴可能会出现发贴失败、发贴被隐藏甚至封号等异常情况,建议您使用官方客户端或 PC 网页版发贴 - 使用官方客户端发贴 启动失败 - 使用 PC 网页版发贴 - 继续使用本软件发贴 写入剪贴板 %1$s的贴子 今天早些时候 @@ -490,4 +485,17 @@ 出现了一点小问题(%1$d) 已启用接收自动构建版本更新(需要 App Center 账号) 已禁用接收自动构建版本更新(需要 App Center 账号) + 建议使用官方途径发贴 + 使用本 App 发贴可能会出现发贴失败、被吞等问题,甚至导致账户永久封禁等严重后果。\n我们建议你使用官方途径进行回贴。 + 使用官方客户端发贴 + 放弃发贴 + 无视风险,继续发帖 + 建议使用官方途径回贴 + 使用本 App 回贴可能会遇到回贴失败、需验证码等问题,甚至导致账户永久封禁等严重后果。\n我们建议你使用官方途径进行回贴。 + 放弃回贴 + 无视风险,继续回贴 + 使用官方客户端回贴 + 未安装官方版客户端 + 使用 PC 网页版发贴 + 发贴回贴风险提示 diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index 0b0a3c99..cdf5c579 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -112,6 +112,12 @@ android:key="hideHotMessageList" android:title="@string/title_hide_hot_message_list" /> + +