feat:完成华为应用市场权限申请适配(增加提示)

This commit is contained in:
Max
2024-01-09 14:46:05 +08:00
parent d47536cc13
commit a10471d1c2
11 changed files with 255 additions and 20 deletions

View File

@@ -134,7 +134,7 @@ public abstract class BaseActivity extends RxAppCompatActivity
*/ */
protected static final String STATUS_TAG = "STATUS_TAG"; protected static final String STATUS_TAG = "STATUS_TAG";
private final RxPermissions rxPermissions = new RxPermissions(this); protected final RxPermissions rxPermissions = new RxPermissions(this);
protected TitleBar mTitleBar; protected TitleBar mTitleBar;
protected DefaultToolBar mToolBar; protected DefaultToolBar mToolBar;
protected CompositeDisposable mCompositeDisposable; protected CompositeDisposable mCompositeDisposable;

View File

@@ -0,0 +1,26 @@
package com.nnbc123.app.common.permission
import com.tbruyelle.rxpermissions2.RxPermissions
/**
* Created by Max on 2024/1/8 10:25
* Desc:
**/
object PermissionHelper {
/**
* 检查权限是否都授权
*/
fun isAllGender(rxPermissions: RxPermissions, vararg perms: String?): Boolean {
if (perms.firstOrNull {
if (it == null) {
false
} else {
!rxPermissions.isGranted(it)
}
} != null) {
return false
}
return true
}
}

View File

@@ -5,12 +5,17 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import android.provider.Settings import android.provider.Settings
import androidx.fragment.app.FragmentActivity
import com.chuhai.utils.ktx.asActivity
import com.nnbc123.app.R import com.nnbc123.app.R
import com.nnbc123.app.common.permission.PermissionHelper
import com.nnbc123.app.ui.widget.dialog.CommonTipDialog import com.nnbc123.app.ui.widget.dialog.CommonTipDialog
import com.nnbc123.app.ui.widget.dialog.RequestPermissionPromptDialog
import com.nnbc123.library.utils.ResUtil import com.nnbc123.library.utils.ResUtil
import com.qiyukf.unicorn.api.event.EventCallback import com.qiyukf.unicorn.api.event.EventCallback
import com.qiyukf.unicorn.api.event.UnicornEventBase import com.qiyukf.unicorn.api.event.UnicornEventBase
import com.qiyukf.unicorn.api.event.entry.RequestPermissionEventEntry import com.qiyukf.unicorn.api.event.entry.RequestPermissionEventEntry
import com.tbruyelle.rxpermissions2.RxPermissions
/** /**
* Created by Max on 2024/1/4 11:10 * Created by Max on 2024/1/4 11:10
@@ -22,18 +27,60 @@ class RequestPermissionEvent : UnicornEventBase<RequestPermissionEventEntry> {
p1: Context?, p1: Context?,
p2: EventCallback<RequestPermissionEventEntry>? p2: EventCallback<RequestPermissionEventEntry>?
) { ) {
val tips = getPermissionTips(p0?.scenesType)
val activity = (p1?.asActivity() as? FragmentActivity)
val perms = p0?.permissionList?.toTypedArray()
if (RequestPermissionPromptDialog.isNeedPrompt()
&& tips != null
&& activity != null
&& perms != null
) {
val rxPermissions = RxPermissions(activity)
if (PermissionHelper.isAllGender(rxPermissions, * perms)) {
p2?.onNotPorcessEvent() p2?.onNotPorcessEvent()
} else {
RequestPermissionPromptDialog(p1, tips).show()
val d = rxPermissions.request(*perms).subscribe({ aBoolean: Boolean? ->
RequestPermissionPromptDialog.dismissCurrentDialog()
if (aBoolean == true) {
p2?.onProcessEventSuccess(p0)
} else {
showDeniedTips(p1, tips)
p2?.onInterceptEvent()
}
}) { obj: Throwable ->
RequestPermissionPromptDialog.dismissCurrentDialog()
obj.printStackTrace()
p2?.onNotPorcessEvent()
}
}
} else {
p2?.onNotPorcessEvent()
}
} }
override fun onDenyEvent(p0: Context?, p1: RequestPermissionEventEntry?): Boolean { override fun onDenyEvent(p0: Context?, p1: RequestPermissionEventEntry?): Boolean {
if (p0 == null) { if (p0 == null) {
return super.onDenyEvent(p0, p1) return super.onDenyEvent(p0, p1)
} }
when (p1?.scenesType) { val tips = getPermissionTips(p1?.scenesType)
RequestPermissionEventEntry.SCENES_TAKE_AUDIO -> { return if (tips != null) {
showDeniedTips(p0, ResUtil.getString(R.string.permission_denied_tips_mic)) showDeniedTips(p0, tips)
return true true
} else {
super.onDenyEvent(p0, p1)
} }
}
/**
* 获取场景对应的权限提示信息不需要提示的权限返回null
*/
private fun getPermissionTips(scenesType: Int?): String? {
when (scenesType) {
RequestPermissionEventEntry.SCENES_TAKE_AUDIO -> {
return ResUtil.getString(R.string.permission_denied_tips_mic)
}
RequestPermissionEventEntry.SCENES_SELECT_MEDIA, RequestPermissionEventEntry.SCENES_SELECT_MEDIA,
RequestPermissionEventEntry.SCENES_TAKE_VIDEO, RequestPermissionEventEntry.SCENES_TAKE_VIDEO,
RequestPermissionEventEntry.SCENES_SAVE_IMAGE, RequestPermissionEventEntry.SCENES_SAVE_IMAGE,
@@ -43,12 +90,11 @@ class RequestPermissionEvent : UnicornEventBase<RequestPermissionEventEntry> {
RequestPermissionEventEntry.SCENES_SELECT_IMAGE, RequestPermissionEventEntry.SCENES_SELECT_IMAGE,
RequestPermissionEventEntry.SCENES_TAKE_PHOTO, RequestPermissionEventEntry.SCENES_TAKE_PHOTO,
RequestPermissionEventEntry.SCENES_VIDEO_CHAT -> { RequestPermissionEventEntry.SCENES_VIDEO_CHAT -> {
showDeniedTips(p0, ResUtil.getString(R.string.permission_denied_tips_image)) return ResUtil.getString(R.string.permission_denied_tips_image)
return true
} }
else -> { else -> {
return super.onDenyEvent(p0, p1) return null
} }
} }
} }

View File

@@ -2,6 +2,7 @@ package com.nnbc123.app.ui.im.fragment;
import android.Manifest; import android.Manifest;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.graphics.Color; import android.graphics.Color;
import android.media.AudioManager; import android.media.AudioManager;
@@ -54,6 +55,7 @@ import com.netease.nimlib.sdk.robot.model.NimRobotInfo;
import com.netease.nimlib.sdk.robot.model.RobotAttachment; import com.netease.nimlib.sdk.robot.model.RobotAttachment;
import com.netease.nimlib.sdk.robot.model.RobotMsgType; import com.netease.nimlib.sdk.robot.model.RobotMsgType;
import com.nnbc123.app.R; import com.nnbc123.app.R;
import com.nnbc123.app.common.permission.PermissionHelper;
import com.nnbc123.app.common.widget.OriginalDrawStatusClickSpan; import com.nnbc123.app.common.widget.OriginalDrawStatusClickSpan;
import com.nnbc123.app.ui.im.GreetPresenter; import com.nnbc123.app.ui.im.GreetPresenter;
import com.nnbc123.app.ui.im.MessageListPanelEx; import com.nnbc123.app.ui.im.MessageListPanelEx;
@@ -61,6 +63,7 @@ import com.nnbc123.app.ui.im.chat.MVHChatterBoxStart;
import com.nnbc123.app.ui.im.model.IMCustomModel; import com.nnbc123.app.ui.im.model.IMCustomModel;
import com.nnbc123.app.ui.webview.CommonWebViewActivity; import com.nnbc123.app.ui.webview.CommonWebViewActivity;
import com.nnbc123.app.ui.widget.dialog.CommonTipDialog; import com.nnbc123.app.ui.widget.dialog.CommonTipDialog;
import com.nnbc123.app.ui.widget.dialog.RequestPermissionPromptDialog;
import com.nnbc123.app.utils.PushMessageHandler; import com.nnbc123.app.utils.PushMessageHandler;
import com.nnbc123.core.UriProvider; import com.nnbc123.core.UriProvider;
import com.nnbc123.core.auth.AuthModel; import com.nnbc123.core.auth.AuthModel;
@@ -321,10 +324,16 @@ public class MessageFragment extends TFragment implements ModuleProxy, MessageLi
} }
private void requestPermission(Consumer<Boolean> consumer, String deniedTips, String... perms) { private void requestPermission(Consumer<Boolean> consumer, String tips, String... perms) {
Context context = getContext();
if (context != null && RequestPermissionPromptDialog.Companion.isNeedPrompt()
&& !PermissionHelper.INSTANCE.isAllGender(rxPermissions, perms)) {
new RequestPermissionPromptDialog(context, tips).show();
}
Disposable disposable = rxPermissions.request(perms).subscribe(aBoolean -> { Disposable disposable = rxPermissions.request(perms).subscribe(aBoolean -> {
RequestPermissionPromptDialog.Companion.dismissCurrentDialog();
if (!aBoolean) { if (!aBoolean) {
showPermissionDeniedTipsDialog(deniedTips); showPermissionDeniedTipsDialog(tips);
} }
if (consumer != null) { if (consumer != null) {
consumer.accept(aBoolean); consumer.accept(aBoolean);
@@ -616,14 +625,21 @@ public class MessageFragment extends TFragment implements ModuleProxy, MessageLi
@Subscribe(threadMode = ThreadMode.MAIN) @Subscribe(threadMode = ThreadMode.MAIN)
@SuppressLint("CheckResult") @SuppressLint("CheckResult")
public void onNimAudioChatEvent(NimAudioChatEvent event) { public void onNimAudioChatEvent(NimAudioChatEvent event) {
checkPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, String[] perms = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.RECORD_AUDIO) Manifest.permission.RECORD_AUDIO};
String tips = ResUtil.getString(R.string.permission_denied_tips_mic);
if (RequestPermissionPromptDialog.Companion.isNeedPrompt()
&& !PermissionHelper.INSTANCE.isAllGender(rxPermissions, perms)) {
new RequestPermissionPromptDialog(requireContext(), tips).show();
}
checkPermission(perms)
.subscribe(result -> { .subscribe(result -> {
RequestPermissionPromptDialog.Companion.dismissCurrentDialog();
if (result) { if (result) {
event.getSuccess().accept(result); event.getSuccess().accept(result);
} else { } else {
showPermissionDeniedTipsDialog(ResUtil.getString(R.string.permission_denied_tips_mic)); showPermissionDeniedTipsDialog(tips);
} }
}); });
} }

View File

@@ -28,6 +28,7 @@ import com.nnbc123.app.ui.login.ModifyInfoActivity
import com.nnbc123.app.ui.user.UserPhotoAdapter.ImageClickListener import com.nnbc123.app.ui.user.UserPhotoAdapter.ImageClickListener
import com.nnbc123.app.ui.utils.ImageLoadUtils import com.nnbc123.app.ui.utils.ImageLoadUtils
import com.nnbc123.app.ui.widget.dialog.CommonTipDialog import com.nnbc123.app.ui.widget.dialog.CommonTipDialog
import com.nnbc123.app.ui.widget.dialog.RequestPermissionPromptDialog
import com.nnbc123.app.utils.RegexUtil import com.nnbc123.app.utils.RegexUtil
import com.nnbc123.core.auth.AuthModel import com.nnbc123.core.auth.AuthModel
import com.nnbc123.core.file.FileModel import com.nnbc123.core.file.FileModel
@@ -40,6 +41,7 @@ import com.nnbc123.library.common.photo.PhotoProviderNew
import com.nnbc123.library.common.util.PhotoCompressCallback import com.nnbc123.library.common.util.PhotoCompressCallback
import com.nnbc123.library.common.util.PhotoCompressUtil import com.nnbc123.library.common.util.PhotoCompressUtil
import com.nnbc123.library.easypermisssion.EasyPermissions import com.nnbc123.library.easypermisssion.EasyPermissions
import com.nnbc123.library.utils.ResUtil
import com.nnbc123.library.utils.TimeUtils import com.nnbc123.library.utils.TimeUtils
import com.sleepbot.datetimepicker.time.RadialPickerLayout import com.sleepbot.datetimepicker.time.RadialPickerLayout
import com.sleepbot.datetimepicker.time.TimePickerDialog import com.sleepbot.datetimepicker.time.TimePickerDialog
@@ -276,6 +278,7 @@ class UserInfoModifyActivity : BaseViewBindingActivity<ActivityUserInfoModifyBin
override fun onPermissionsDenied(requestCode: Int, perms: MutableList<String>) { override fun onPermissionsDenied(requestCode: Int, perms: MutableList<String>) {
if (requestCode == PERMISSION_CODE_STORAGE) { if (requestCode == PERMISSION_CODE_STORAGE) {
RequestPermissionPromptDialog.dismissCurrentDialog()
val requestTip = "为了能正常加载您本地的文件内容,请前往应用权限设置界面打开存储空间权限。" val requestTip = "为了能正常加载您本地的文件内容,请前往应用权限设置界面打开存储空间权限。"
val mPrivacyDialog = CommonTipDialog(context) val mPrivacyDialog = CommonTipDialog(context)
mPrivacyDialog.setTipMsg(requestTip) mPrivacyDialog.setTipMsg(requestTip)
@@ -307,12 +310,19 @@ class UserInfoModifyActivity : BaseViewBindingActivity<ActivityUserInfoModifyBin
} }
private fun checkStoragePermission() { private fun checkStoragePermission() {
RequestPermissionPromptDialog.dismissCurrentDialog()
if (!EasyPermissions.hasPermissions( if (!EasyPermissions.hasPermissions(
this, this,
Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE Manifest.permission.READ_EXTERNAL_STORAGE
) )
) { ) {
if (RequestPermissionPromptDialog.isNeedPrompt()) {
RequestPermissionPromptDialog(
this,
ResUtil.getString(R.string.permission_denied_tips_image)
).show()
}
EasyPermissions.requestPermissions( EasyPermissions.requestPermissions(
this, this,
"请您再次考虑授予存储空间权限,否则将无法正常加载您本地的文件内容。", "请您再次考虑授予存储空间权限,否则将无法正常加载您本地的文件内容。",

View File

@@ -28,6 +28,7 @@ import com.nnbc123.app.takephoto.compress.CompressConfig
import com.nnbc123.app.ui.user.UserModifyPhotosAdapter.PhotoItemClickListener import com.nnbc123.app.ui.user.UserModifyPhotosAdapter.PhotoItemClickListener
import com.nnbc123.app.ui.utils.ImageLoadUtils import com.nnbc123.app.ui.utils.ImageLoadUtils
import com.nnbc123.app.ui.widget.dialog.CommonTipDialog import com.nnbc123.app.ui.widget.dialog.CommonTipDialog
import com.nnbc123.app.ui.widget.dialog.RequestPermissionPromptDialog
import com.nnbc123.app.utils.RegexUtil import com.nnbc123.app.utils.RegexUtil
import com.nnbc123.core.file.FileModel import com.nnbc123.core.file.FileModel
import com.nnbc123.core.user.UserModel import com.nnbc123.core.user.UserModel
@@ -39,6 +40,7 @@ import com.nnbc123.library.common.photo.PhotoProviderNew
import com.nnbc123.library.common.util.PhotoCompressCallback import com.nnbc123.library.common.util.PhotoCompressCallback
import com.nnbc123.library.common.util.PhotoCompressUtil import com.nnbc123.library.common.util.PhotoCompressUtil
import com.nnbc123.library.easypermisssion.EasyPermissions import com.nnbc123.library.easypermisssion.EasyPermissions
import com.nnbc123.library.utils.ResUtil
import com.nnbc123.library.utils.file.JXFileUtils import com.nnbc123.library.utils.file.JXFileUtils
import com.orhanobut.logger.Logger import com.orhanobut.logger.Logger
import com.trello.rxlifecycle3.android.ActivityEvent import com.trello.rxlifecycle3.android.ActivityEvent
@@ -225,6 +227,7 @@ class UserModifyPhotosActivity : TakePhotoActivity(), PhotoItemClickListener,
override fun onPermissionsDenied(requestCode: Int, perms: MutableList<String>) { override fun onPermissionsDenied(requestCode: Int, perms: MutableList<String>) {
if (requestCode == PERMISSION_CODE_STORAGE) { if (requestCode == PERMISSION_CODE_STORAGE) {
RequestPermissionPromptDialog.dismissCurrentDialog()
val requestTip = "为了能正常加载您本地的文件内容,请前往应用权限设置界面打开存储空间权限。" val requestTip = "为了能正常加载您本地的文件内容,请前往应用权限设置界面打开存储空间权限。"
val mPrivacyDialog = CommonTipDialog(context) val mPrivacyDialog = CommonTipDialog(context)
mPrivacyDialog.setTipMsg(requestTip) mPrivacyDialog.setTipMsg(requestTip)
@@ -256,12 +259,19 @@ class UserModifyPhotosActivity : TakePhotoActivity(), PhotoItemClickListener,
} }
private fun checkStoragePermission() { private fun checkStoragePermission() {
RequestPermissionPromptDialog.dismissCurrentDialog()
if (!EasyPermissions.hasPermissions( if (!EasyPermissions.hasPermissions(
this, this,
Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE Manifest.permission.READ_EXTERNAL_STORAGE
) )
) { ) {
if (RequestPermissionPromptDialog.isNeedPrompt()) {
RequestPermissionPromptDialog(
this,
ResUtil.getString(R.string.permission_denied_tips_image)
).show()
}
EasyPermissions.requestPermissions( EasyPermissions.requestPermissions(
this, this,
"请您再次考虑授予存储空间权限,否则将无法正常加载您本地的文件内容。", "请您再次考虑授予存储空间权限,否则将无法正常加载您本地的文件内容。",

View File

@@ -0,0 +1,70 @@
package com.nnbc123.app.ui.widget.dialog
import android.app.Dialog
import android.content.Context
import android.os.Bundle
import android.view.Gravity
import android.view.View
import android.view.WindowManager
import android.widget.TextView
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleEventObserver
import androidx.lifecycle.LifecycleOwner
import com.nnbc123.app.R
import com.nnbc123.library.utils.config.BasicConfig
/**
* Created by Max on 2024/1/8 10:06
* Desc:申请权限提示
**/
class RequestPermissionPromptDialog(context: Context, private val message: String) :
Dialog(context, R.style.dialog_full_width), LifecycleEventObserver {
companion object {
private var currentDialog: RequestPermissionPromptDialog? = null
fun dismissCurrentDialog() {
currentDialog?.dismiss()
currentDialog = null
}
/**
* 是否需要展示权限申请说明
*/
fun isNeedPrompt(): Boolean {
return (BasicConfig.INSTANCE.channel == "huawei")
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
currentDialog = this
val window = window
if (window != null) {
val lps = window.attributes
lps.gravity = Gravity.TOP
lps.verticalMargin = 0f
lps.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
window.attributes = lps
}
setCanceledOnTouchOutside(false)
setContentView(R.layout.dialog_request_permission_prompt)
val rootView = findViewById<View>(R.id.layout_root)
// 权限已被拒时再申请权限会立即回调结果,这个弹窗看起来闪一下就没了,优化这个体验:延迟可见
rootView?.animate()?.alpha(1f)?.setStartDelay(200)?.start()
val messageView = findViewById<TextView>(R.id.tv_message)
messageView?.text = message
(ownerActivity as? LifecycleOwner)?.lifecycle?.addObserver(this)
}
override fun dismiss() {
currentDialog = null
(ownerActivity as? LifecycleOwner)?.lifecycle?.removeObserver(this)
super.dismiss()
}
override fun onStateChanged(source: LifecycleOwner, event: Lifecycle.Event) {
if (event == Lifecycle.Event.ON_DESTROY) {
this@RequestPermissionPromptDialog.dismiss()
}
}
}

View File

@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/layout_root"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="8dp"
android:layout_marginTop="5dp"
android:alpha="0"
android:background="@drawable/shape_white_8dp_round"
android:paddingHorizontal="28dp"
android:paddingVertical="14dp">
<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="权限使用说明:"
android:textColor="#2B2D33"
android:textSize="14sp"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="1dp"
android:textColor="#696D7A"
android:textSize="14sp"
app:layout_constraintTop_toBottomOf="@id/tv_title"
tools:text="MESSAGEMESSA" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -125,6 +125,19 @@
<item name="android:backgroundDimAmount">0.5</item> <item name="android:backgroundDimAmount">0.5</item>
</style> </style>
<style name="dialog_full_width" parent="android:Theme.Dialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
<item name="android:background">@android:color/transparent</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:backgroundDimEnabled">false</item>
<item name="android:windowMinWidthMajor">100%</item>
<item name="android:windowMinWidthMinor">100%</item>
</style>
<style name="top_dialog" parent="Theme.AppCompat.Dialog"> <style name="top_dialog" parent="Theme.AppCompat.Dialog">
<item name="android:windowIsFloating">false</item> <item name="android:windowIsFloating">false</item>
<item name="windowActionBar">false</item> <item name="windowActionBar">false</item>

View File

@@ -26,7 +26,9 @@ import com.google.android.flexbox.FlexboxLayout;
import com.hjq.toast.ToastUtils; import com.hjq.toast.ToastUtils;
import com.netease.nim.uikit.StatusBarUtil; import com.netease.nim.uikit.StatusBarUtil;
import com.netease.nim.uikit.common.util.log.LogUtil; import com.netease.nim.uikit.common.util.log.LogUtil;
import com.nnbc123.app.common.permission.PermissionHelper;
import com.nnbc123.app.ui.widget.dialog.CommonTipDialog; import com.nnbc123.app.ui.widget.dialog.CommonTipDialog;
import com.nnbc123.app.ui.widget.dialog.RequestPermissionPromptDialog;
import com.nnbc123.library.utils.ResUtil; import com.nnbc123.library.utils.ResUtil;
import com.trello.rxlifecycle3.android.ActivityEvent; import com.trello.rxlifecycle3.android.ActivityEvent;
import com.nnbc123.app.R; import com.nnbc123.app.R;
@@ -196,7 +198,14 @@ public class PublishActivity extends BaseMvpActivity<IPublishView, PublishPresen
imageAdapter.setOnItemClickListener((adapter, view, position) -> { imageAdapter.setOnItemClickListener((adapter, view, position) -> {
PublishItem item = imageShowList.get(position); PublishItem item = imageShowList.get(position);
if (item.isAddItem()) { if (item.isAddItem()) {
String tips = ResUtil.getString(R.string.permission_denied_tips_image);
String permission = Manifest.permission.READ_EXTERNAL_STORAGE;
if (RequestPermissionPromptDialog.Companion.isNeedPrompt()
&& !PermissionHelper.INSTANCE.isAllGender(rxPermissions, permission)) {
new RequestPermissionPromptDialog(this, tips).show();
}
checkPermission((aBoolean) -> { checkPermission((aBoolean) -> {
RequestPermissionPromptDialog.Companion.dismissCurrentDialog();
if (aBoolean) { if (aBoolean) {
CaptureStrategy captureStrategy = new CaptureStrategy(true, context.getPackageName() + ".fileprovider", CaptureStrategy captureStrategy = new CaptureStrategy(true, context.getPackageName() + ".fileprovider",
BasicConfig.INSTANCE.getImageDir().getAbsolutePath()); BasicConfig.INSTANCE.getImageDir().getAbsolutePath());
@@ -216,9 +225,9 @@ public class PublishActivity extends BaseMvpActivity<IPublishView, PublishPresen
.setOriginalImagee(isOriginalImage) .setOriginalImagee(isOriginalImage)
.forResult(ConstantValue.CODE_CHOOSE_PHOTO); .forResult(ConstantValue.CODE_CHOOSE_PHOTO);
} else { } else {
showPermissionDeniedDialog(); showPermissionDeniedDialog(tips);
} }
}, Manifest.permission.READ_EXTERNAL_STORAGE); }, permission);
} else { } else {
BigPhotoActivity.startCanDelete(PublishActivity.this, (ArrayList<CustomItem>) uploadList, BigPhotoActivity.startCanDelete(PublishActivity.this, (ArrayList<CustomItem>) uploadList,
position, new PagerOption().setDelete(true)); position, new PagerOption().setDelete(true));
@@ -238,9 +247,9 @@ public class PublishActivity extends BaseMvpActivity<IPublishView, PublishPresen
updateImagesData(); updateImagesData();
} }
private void showPermissionDeniedDialog(){ private void showPermissionDeniedDialog(String tips){
CommonTipDialog mPrivacyDialog = new CommonTipDialog(context); CommonTipDialog mPrivacyDialog = new CommonTipDialog(context);
mPrivacyDialog.setTipMsg(ResUtil.getString(R.string.permission_denied_tips_image)); mPrivacyDialog.setTipMsg(tips);
mPrivacyDialog.setOkText("去设置"); mPrivacyDialog.setOkText("去设置");
mPrivacyDialog.setOnActionListener( mPrivacyDialog.setOnActionListener(
new CommonTipDialog.OnActionListener() { new CommonTipDialog.OnActionListener() {

View File

@@ -13,5 +13,5 @@ interface PermissionProxy {
* @param consumer * @param consumer
* @param perms 权限列表 * @param perms 权限列表
*/ */
fun requestPermission(consumer: Consumer<Boolean>, deniedTips: String, vararg perms: String) fun requestPermission(consumer: Consumer<Boolean>, tips: String, vararg perms: String)
} }