Browse Source

1.添加获取权限功能

王鹏鹏 2 years ago
parent
commit
267bd7d98f

+ 2 - 0
baselib/src/main/java/com/yingyangfly/baselib/permissions/Permission.java

@@ -51,6 +51,8 @@ public final class Permission {
 
     public static final String VIBRATE = "android.permission.VIBRATE";//振动权限
 
+    public static final String POST_NOTIFICATIONS = "android.permission.POST_NOTIFICATIONS"; // 通知权限
+
     public static final String FOREGROUND_SERVICE = "android.permission.FOREGROUND_SERVICE";
     public static final String WAKE_LOCK = "android.permission.WAKE_LOCK";
 

+ 5 - 0
home/src/main/AndroidManifest.xml

@@ -2,6 +2,11 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.yingyangfly.home">
 
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
+    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+
     <application>
         <activity
             android:name="com.yingyangfly.home.activity.HomeActivity"

+ 54 - 2
home/src/main/java/com/yingyangfly/home/activity/HomeActivity.kt

@@ -13,6 +13,9 @@ import com.yingyangfly.baselib.ext.setOnSingleClickListener
 import com.yingyangfly.baselib.ext.show
 import com.yingyangfly.baselib.ext.toast
 import com.yingyangfly.baselib.mvvm.BaseMVVMActivity
+import com.yingyangfly.baselib.permissions.EsayPermissions
+import com.yingyangfly.baselib.permissions.OnPermission
+import com.yingyangfly.baselib.permissions.Permission
 import com.yingyangfly.baselib.router.RouterUrlCommon
 import com.yingyangfly.baselib.utils.JumpUtil
 import com.yingyangfly.baselib.utils.User
@@ -44,6 +47,14 @@ class HomeActivity : BaseMVVMActivity<ActivityHomeBinding, HomeViewModel>() {
 
     private var playVoice: PlayVoice? = null
 
+    /**
+     * 权限列表
+     */
+    val permissions = mutableListOf(
+        Permission.WRITE_EXTERNAL_STORAGE,
+        Permission.READ_EXTERNAL_STORAGE
+    )
+
     override fun initViews() {
         playVoice = PlayVoice()
         playVoice?.setContext(this)
@@ -57,7 +68,7 @@ class HomeActivity : BaseMVVMActivity<ActivityHomeBinding, HomeViewModel>() {
                         .leftBtnText("确定")
                         .rightBtnText("取消")
                         .leftClick({
-                            jumpWebView(it)
+                            initPermission(it)
                             null
                         }, true)
                         .rightClick({
@@ -66,7 +77,7 @@ class HomeActivity : BaseMVVMActivity<ActivityHomeBinding, HomeViewModel>() {
                         .outCancel(true)
                         .show(supportFragmentManager)
                 } else {
-                    jumpWebView(it)
+                    initPermission(it)
                 }
             }
         }
@@ -312,4 +323,45 @@ class HomeActivity : BaseMVVMActivity<ActivityHomeBinding, HomeViewModel>() {
                 "&playClass=" + bean.playClass + "&userToken=" + User.getToken()
         JumpUtil.jumpActivityWithUrl(RouterUrlCommon.WEB_VIEW_INTERACTION_JS, str, this)
     }
+
+    /**
+     * 获取应用权限
+     */
+    private fun initPermission(bean: Record) {
+        val isHasPermission = EsayPermissions.isHasPermissions(this, permissions)
+        if (isHasPermission) {
+            jumpWebView(bean)
+        } else {
+            EsayPermissions.with(this).permission(permissions).request(object : OnPermission {
+                override fun noPermission(denied: MutableList<String>?, quick: Boolean) {
+                    showPermissionTipDialog()
+                }
+
+                override fun hasPermission(granted: MutableList<String>?, isAll: Boolean) {
+                    if (isAll) {
+                        jumpWebView(bean)
+                    } else {
+                        showPermissionTipDialog()
+                    }
+                }
+            })
+        }
+    }
+
+    /**
+     * 跳转设置页面
+     */
+    private fun showPermissionTipDialog() {
+        TipDialogFragment.TipDialogBuilder()
+            .content("当前应用缺少必要权限,请点击“设置”-“权限”-“权限管理”打开所需权限")
+            .leftBtnText("退出")
+            .rightBtnText("设置")
+            .leftClick({
+            }, dimiss = true)
+            .rightClick({
+                EsayPermissions.gotoPermissionSettings(mContext)
+                null
+            }, dimiss = true)
+            .show(supportFragmentManager)
+    }
 }

+ 1 - 9
home/src/main/manifest/AndroidManifest.xml

@@ -3,17 +3,9 @@
     package="com.yingyang.home">
 
     <uses-permission android:name="android.permission.INTERNET" />
-    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
-    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
-    <uses-permission android:name="android.permission.RECORD_AUDIO" />
-    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
-    <uses-permission android:name="android.permission.BLUETOOTH" />
-    <uses-permission android:name="android.permission.CAMERA" />
-    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
-    <uses-feature android:name="android.hardware.camera" />
-    <uses-feature android:name="android.hardware.camera.autofocus" />
 
     <application>
         <activity

+ 2 - 2
livebroadcast/src/main/java/com/yingyang/livebroadcast/activity/list/LiveBroadcastListActivity.kt

@@ -143,8 +143,8 @@ class LiveBroadcastListActivity :
             .leftClick({
             }, dimiss = true)
             .rightClick({
-                val intent = Intent(Settings.ACTION_PRIVACY_SETTINGS)
-                startActivity(intent)
+                EsayPermissions.gotoPermissionSettings(mContext)
+                null
             }, dimiss = true)
             .show(supportFragmentManager)
     }