sync:同步音萌修改记录(针对华为市场审核的调整)

This commit is contained in:
Max
2024-01-15 14:11:55 +08:00
parent 8f0d723fba
commit cbd92a2f10
7 changed files with 96 additions and 21 deletions

View File

@@ -1,5 +1,8 @@
package com.nnbc123.app.common.permission
import android.content.Context
import android.content.pm.PackageManager
import androidx.core.content.ContextCompat
import com.tbruyelle.rxpermissions2.RxPermissions
/**
@@ -8,19 +11,28 @@ import com.tbruyelle.rxpermissions2.RxPermissions
**/
object PermissionHelper {
fun isGranted(context: Context, permission: String): Boolean {
return ContextCompat.checkSelfPermission(
context,
permission
) == PackageManager.PERMISSION_GRANTED
}
/**
* 检查权限是否都授权
*/
fun isAllGender(rxPermissions: RxPermissions, vararg perms: String?): Boolean {
if (perms.firstOrNull {
if (it == null) {
false
} else {
!rxPermissions.isGranted(it)
}
} != null) {
return false
}
return true
fun isAllGranted(context: Context, vararg permissions: String): Boolean {
return permissions.firstOrNull {
!isGranted(context, it)
} == null
}
/**
* 检查权限是否都授权
*/
fun isAllGranted(rxPermissions: RxPermissions, vararg perms: String): Boolean {
return perms.firstOrNull {
!rxPermissions.isGranted(it)
} == null
}
}

View File

@@ -36,7 +36,7 @@ class RequestPermissionEvent : UnicornEventBase<RequestPermissionEventEntry> {
&& perms != null
) {
val rxPermissions = RxPermissions(activity)
if (PermissionHelper.isAllGender(rxPermissions, * perms)) {
if (PermissionHelper.isAllGranted(rxPermissions, * perms)) {
p2?.onNotPorcessEvent()
} else {
RequestPermissionPromptDialog(p1, tips).show()
@@ -81,14 +81,23 @@ class RequestPermissionEvent : UnicornEventBase<RequestPermissionEventEntry> {
return ResUtil.getString(R.string.permission_denied_tips_mic)
}
RequestPermissionEventEntry.SCENES_TAKE_VIDEO -> {
return StringBuffer().append("1.")
.append(ResUtil.getString(R.string.permission_denied_tips_camera))
.append("\n2.").append(ResUtil.getString(R.string.permission_denied_tips_mic))
.toString()
}
RequestPermissionEventEntry.SCENES_TAKE_PHOTO -> {
return ResUtil.getString(R.string.permission_denied_tips_camera)
}
RequestPermissionEventEntry.SCENES_SELECT_MEDIA,
RequestPermissionEventEntry.SCENES_TAKE_VIDEO,
RequestPermissionEventEntry.SCENES_SAVE_IMAGE,
RequestPermissionEventEntry.SCENES_SAVE_VIDEO,
RequestPermissionEventEntry.SCENES_SELECT_VIDEO,
RequestPermissionEventEntry.SCENES_SELECT_FILE,
RequestPermissionEventEntry.SCENES_SELECT_IMAGE,
RequestPermissionEventEntry.SCENES_TAKE_PHOTO,
RequestPermissionEventEntry.SCENES_VIDEO_CHAT -> {
return ResUtil.getString(R.string.permission_denied_tips_image)
}

View File

@@ -8,12 +8,15 @@ import android.view.View
import com.netease.nim.uikit.StatusBarUtil
import com.nnbc123.app.R
import com.nnbc123.app.base.BaseBindingActivity
import com.nnbc123.app.common.permission.PermissionHelper
import com.nnbc123.app.databinding.ActivitySkillEditBinding
import com.nnbc123.core.skill.entity.SkillPropertyEntity
import com.nnbc123.app.skill.repository.SkillDataManager
import com.nnbc123.app.skill.repository.SkillModel
import com.nnbc123.app.skill.widget.CARD_TYPE_AUDIO
import com.nnbc123.app.ui.widget.dialog.RequestPermissionPromptDialog
import com.nnbc123.core.skill.entity.SkillPropertyEntity
import com.nnbc123.library.annatation.ActLayoutRes
import com.nnbc123.library.utils.ResUtil
@ActLayoutRes(R.layout.activity_skill_edit)
class AddSkillActivity : BaseBindingActivity<ActivitySkillEditBinding>() {
@@ -79,11 +82,24 @@ class AddSkillActivity : BaseBindingActivity<ActivitySkillEditBinding>() {
@SuppressLint("CheckResult")
private fun checkPermissionAndDeal(it: SkillPropertyEntity) {
checkPermission(
val tips = StringBuffer().append("1.")
.append(ResUtil.getString(R.string.permission_denied_tips_mic))
.append("\n2.").append(ResUtil.getString(R.string.permission_denied_tips_image))
.toString()
val params = arrayOf(
Manifest.permission.RECORD_AUDIO,
Manifest.permission.WRITE_EXTERNAL_STORAGE
)
if (RequestPermissionPromptDialog.isNeedPrompt() && !PermissionHelper.isAllGranted(
rxPermissions,
*params
)
) {
RequestPermissionPromptDialog(this, tips).show()
}
checkPermission(*params)
.subscribe { aBoolean: Boolean ->
RequestPermissionPromptDialog.dismissCurrentDialog()
if (aBoolean) {
setSkillViewData(it)
} else {

View File

@@ -328,7 +328,7 @@ public class MessageFragment extends TFragment implements ModuleProxy, MessageLi
private void requestPermission(Consumer<Boolean> consumer, String tips, String... perms) {
Context context = getContext();
if (context != null && RequestPermissionPromptDialog.Companion.isNeedPrompt()
&& !PermissionHelper.INSTANCE.isAllGender(rxPermissions, perms)) {
&& !PermissionHelper.INSTANCE.isAllGranted(rxPermissions, perms)) {
new RequestPermissionPromptDialog(context, tips).show();
}
Disposable disposable = rxPermissions.request(perms).subscribe(aBoolean -> {
@@ -630,7 +630,7 @@ public class MessageFragment extends TFragment implements ModuleProxy, MessageLi
Manifest.permission.RECORD_AUDIO};
String tips = ResUtil.getString(R.string.permission_denied_tips_mic);
if (RequestPermissionPromptDialog.Companion.isNeedPrompt()
&& !PermissionHelper.INSTANCE.isAllGender(rxPermissions, perms)) {
&& !PermissionHelper.INSTANCE.isAllGranted(rxPermissions, perms)) {
new RequestPermissionPromptDialog(requireContext(), tips).show();
}
checkPermission(perms)

View File

@@ -991,6 +991,7 @@
<string name="diamond_inning">%d钻/局</string>
<string name="permission_denied_tips_mic">为了实现连麦及语音输入等功能,请您允许应用向您获取“麦克风”权限</string>
<string name="permission_denied_tips_image">访问你的本地内容,以能正常使用图片上传、视频发送等应用功能</string>
<string name="permission_denied_tips_camera">用于拍摄更新个人头像、发布动态、与客服反馈问题时进行照片和视频的拍摄录制</string>
<string name="last_login">上次登录</string>
<string name="login_line">Line登录</string>
<string name="login_google">Google登录</string>

View File

@@ -202,7 +202,7 @@ public class PublishActivity extends BaseMvpActivity<IPublishView, PublishPresen
String tips = ResUtil.getString(R.string.permission_denied_tips_image);
String permission = Build.VERSION.SDK_INT >= 33 ? Manifest.permission.READ_MEDIA_IMAGES : Manifest.permission.READ_EXTERNAL_STORAGE;
if (RequestPermissionPromptDialog.Companion.isNeedPrompt()
&& !PermissionHelper.INSTANCE.isAllGender(rxPermissions, permission)) {
&& !PermissionHelper.INSTANCE.isAllGranted(rxPermissions, permission)) {
new RequestPermissionPromptDialog(this, tips).show();
}
checkPermission((aBoolean) -> {

View File

@@ -5,11 +5,13 @@ import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.net.Uri;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.viewpager.widget.ViewPager;
import android.provider.Settings;
import android.view.View;
import android.widget.ImageView;
@@ -17,10 +19,13 @@ import com.flyco.tablayout.SlidingTabLayout;
import com.netease.nim.uikit.StatusBarUtil;
import com.nnbc123.app.R;
import com.nnbc123.app.base.BaseMvpActivity;
import com.nnbc123.app.common.permission.PermissionHelper;
import com.nnbc123.app.public_chat_hall.adapter.PagerDataAdapter;
import com.nnbc123.app.music.fragment.LocalMusicListFragment;
import com.nnbc123.app.music.fragment.ShareMusicListFragment;
import com.nnbc123.app.music.presenter.MusicListPresenter;
import com.nnbc123.app.ui.widget.dialog.CommonTipDialog;
import com.nnbc123.app.ui.widget.dialog.RequestPermissionPromptDialog;
import com.nnbc123.core.auth.event.KickOutEvent;
import com.nnbc123.core.music.db.bean.LocalMusicBean;
import com.nnbc123.core.statistic.StatisticManager;
@@ -28,6 +33,7 @@ import com.nnbc123.core.statistic.protocol.StatisticsProtocol;
import com.nnbc123.library.base.factory.CreatePresenter;
import com.nnbc123.core.music.event.JumpToShareMusicListFragmentEvent;
import com.nnbc123.core.music.view.IMusicListView;
import com.nnbc123.library.utils.ResUtil;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
@@ -96,15 +102,46 @@ public class MusicListActivity extends BaseMvpActivity<IMusicListView, MusicList
page = getIntent().getIntExtra(KEY_PAGE, page);
viewPager.setCurrentItem(page);
StatisticManager.Instance().onEvent(StatisticsProtocol.ROOM_SHARING_MUSIC, "共享音乐");
checkPermission(Build.VERSION.SDK_INT >= 33 ? Manifest.permission.READ_MEDIA_AUDIO : Manifest.permission.READ_EXTERNAL_STORAGE)
String tips = ResUtil.getString(R.string.permission_denied_tips_image);
String params = Build.VERSION.SDK_INT >= 33 ? Manifest.permission.READ_MEDIA_AUDIO : Manifest.permission.READ_EXTERNAL_STORAGE;
if (RequestPermissionPromptDialog.Companion.isNeedPrompt() && !PermissionHelper.INSTANCE.isAllGranted(
rxPermissions, params)
) {
new RequestPermissionPromptDialog(this, tips).show();
}
checkPermission(params)
.compose(bindToLifecycle())
.subscribe(aBoolean -> {
RequestPermissionPromptDialog.Companion.dismissCurrentDialog();
if (!aBoolean) {
toast("请给予应用存储权限,以正常播放音乐。");
showPermissionDeniedDialog(tips);
}
});
}
private void showPermissionDeniedDialog(String tips) {
CommonTipDialog mPrivacyDialog = new CommonTipDialog(context);
mPrivacyDialog.setTipMsg(tips);
mPrivacyDialog.setOkText("去设置");
mPrivacyDialog.setOnActionListener(
new CommonTipDialog.OnActionListener() {
@Override
public void onOk() {
//同意跳到应用详情页面
Uri packageUri = Uri.parse("package:" + getPackageName());
Intent intent = new Intent(
Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
packageUri
);
startActivityForResult(
intent, 0
);
}
}
);
mPrivacyDialog.show();
}
@Override
protected void onDestroy() {
super.onDestroy();