diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index eb400685..c0346249 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -33,6 +33,14 @@ android:resizeable="true" android:smallScreens="true" /> + + + + + + - 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" - ) - ) + val intent = + 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" ) + ) + val resolveInfos = packageManager.queryIntentActivities( + intent, + PackageManager.MATCH_DEFAULT_ONLY + ).filter { it.resolvePackageName != packageName } + try { + if (resolveInfos.isNotEmpty()) { + startActivity(intent) } else { toastShort(R.string.toast_official_client_not_install) } } catch (e: ActivityNotFoundException) { toastShort(R.string.toast_official_client_not_install) } - finish() } } } else { 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 8ed37bb2..ecdf74e9 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 @@ -4,6 +4,7 @@ import android.annotation.SuppressLint import android.content.ActivityNotFoundException import android.content.Intent import android.content.Intent.ACTION_VIEW +import android.content.pm.PackageManager import android.graphics.Color import android.net.Uri import android.os.Bundle @@ -132,9 +133,13 @@ class ReplyActivity : BaseActivity(), View.OnClickListener, } setNeutralButton(R.string.btn_continue_reply, null) setPositiveButton(R.string.button_official_client_reply) { _, _ -> + val intent = Intent(ACTION_VIEW).setData(getDispatchUri()) + val resolveInfos = + packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY) + .filter { it.resolvePackageName != packageName } try { - if (isOfficialClientInstalled()) { - startActivity(Intent(ACTION_VIEW).setData(getDispatchUri())) + if (resolveInfos.isNotEmpty()) { + startActivity(intent) } else { toastShort(R.string.toast_official_client_not_install) }