前言

应用的使用需要申请权限,但是如果用户禁用掉,或者禁用并不再提醒就必须到系统设置中开启。

// 权限

implementation 'com.yanzhenjie:permission:2.0.3'

获取权限

interface PermissionsCallBack {

fun Granted();

}

private fun getPermission(callback: PermissionsCallBack) {

if (hasPermissions) {

callback.Granted()

return

}

if (AndPermission.hasPermissions(this, *permissions)) {

hasPermissions = true

callback.Granted()

return

}

AndPermission

.with(this)

.runtime()

.permission(*permissions)

.onGranted {

hasPermissions = true

callback.Granted()

}

.onDenied {

mContext?.let {

Toasty.info(it, "授权失败,功能无法使用!").show()

AlertDialog.Builder(it)

.setTitle("提示")

.setMessage("需要打开应用权限才能正常使用!")

.setNegativeButton("取消", object : DialogInterface.OnClickListener {

override fun onClick(dialog: DialogInterface?, which: Int) {

dialog?.dismiss()

}

})

.setPositiveButton("确定", object : DialogInterface.OnClickListener {

override fun onClick(dialog: DialogInterface?, which: Int) {

dialog?.dismiss()

gotoMiuiPermission()

}

}).create().show()

}

}

.start();

}

打开权限设置页面

我们可以打开系统的设置页面,但是该页面会有应用卸载的功能,为了让用户直接跳转到应用权限页面,我们就要根据不同的系统进行调用。

/**

* 跳转到miui的权限管理页面

*/

private fun gotoMiuiPermission() {

val i = Intent("miui.intent.action.APP_PERM_EDITOR")

val componentName = ComponentName(

"com.miui.securitycenter",

"com.miui.permcenter.permissions.PermissionsEditorActivity"

)

i.component = componentName

i.putExtra("extra_pkgname", activity?.packageName)

try {

startActivity(i)

} catch (e: Exception) {

e.printStackTrace()

gotoMeizuPermission()

}

}

/**

* 跳转到魅族的权限管理系统

*/

private fun gotoMeizuPermission() {

val intent = Intent("com.meizu.safe.security.SHOW_APPSEC")

intent.addCategory(Intent.CATEGORY_DEFAULT)

intent.putExtra("packageName", activity?.packageName)

try {

startActivity(intent)

} catch (e: java.lang.Exception) {

e.printStackTrace()

gotoHuaweiPermission()

}

}

/**

* 华为的权限管理页面

*/

private fun gotoHuaweiPermission() {

try {

val intent = Intent()

intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK

val comp = ComponentName(

"com.huawei.systemmanager",

"com.huawei.permissionmanager.ui.MainActivity"

) //华为权限管理

intent.component = comp

startActivity(intent)

} catch (e: java.lang.Exception) {

e.printStackTrace()

getAppDetailSettingIntent()

}

}

/**

* 跳转到权限设置界面

*/

private fun getAppDetailSettingIntent() {

val intent = Intent()

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)

intent.action = "android.settings.APPLICATION_DETAILS_SETTINGS"

intent.data = Uri.fromParts("package", activity?.packageName, null)

startActivity(intent)

}

android权限设置在哪找,Android权限申请与打开权限设置页面相关推荐

  1. 【Android 内存优化】Android 工程中使用 libjpeg-turbo 压缩图片 ( 初始化压缩对象 | 打开文件 | 设置压缩参数 | 写入压缩图像数据 | 完成压缩 | 释放资源 )

    文章目录 一.使用 libjpeg-turbo 压缩图片流程 二.初始化 JPEG 压缩对象 三.打开文件 四.设置压缩参数 五.开始压缩 六.循环写入压缩数据 七.完成图片压缩及收尾 八.libjp ...

  2. mac开发 oc 授权检测、申请、打开授权设置页面

    参考文档: https://stackoverflow.com/questions/6652598/cocoa-button-opens-a-system-preference-page https: ...

  3. android手机 存储路径设置在哪里找,Android 存储路径选择方法

    Android能用来存储的地方有两个,一个是手机内置的存储空间,一个是外置的SD卡,内置的存储空间一般比较小,所以应用的缓存建议存储在外置的SD卡中. 在Android系统中如何获得存储的路径呢? p ...

  4. 对于刚入行的Android程序员来说,找Android培训机构应该注意哪些方面?

    人在手足无措的时候,最好的就是静止不动,千万别做盲目冲动的事情. 最起码把该搞清楚的都搞清楚,该了解的都了解.最好能够进行一段时间的自学尝试,零成本试错.除非是非得赶时间.着急速成就业的同学,否则报班 ...

  5. win7 ie10代理设置不能用 设置完代理后点确定 回头再打开代理设置对钩并没有选上

    IE代理服务器设置失效,比如勾选上了代理设置,或者改了代理服务器的端口,改好后关闭重新打开,发现没有更改设置, 可以注册表里cmd运行窗口输入 regedit HKEY_CURRENT_USER/So ...

  6. Android 8.0学习(18)--- Android8.0运行时权限策略变化和适配方案

    Android8.0运行时权限策略变化和适配方案    在 Android O 之前,如果应用在运行时请求权限并且被授予该权限,系统会错误地将属于同一权限组并且在清单中注册的其他权限也一起授予应用.对 ...

  7. Android微信暗黑模式的方法,微信“暗黑”模式来了!设置方法拿走不谢

    盼望着,盼望着 暗黑模式来啦! 小编问问大家 你们已经更新了吗? 3月上旬,微信方面表示 为了优化用户体验 微信与苹果达成合作 共同探索微信在iOS系统的深色模式体验 目前该功能已完成开发 将有望在下 ...

  8. ie浏览器怎么打开html,win10ie浏览器不能打开html设置怎么办

    有用户在使用Win10系统时,可能由于安装其他浏览器时错误操作,导致IE浏览器无法打开诸如HTML等一些格式的网页文件.HTML文件是由HTML命令组成的描述性文本,HTML文件是可以被多种网页浏览器 ...

  9. 打开手机设置相关界面

    一:在app内打开自己app的专用设置界面 在我们的APP中,可能会使用多种服务,例如定位.推送.相册.拍照.通讯录等.选择是否允许一般只出现在安装app后第一次打开时,可是我们依然需要在使用到某种服 ...

最新文章

  1. 项目Makefile文件模板
  2. 人工智能的过去、现在和未来
  3. unicode字符串操作函数 vc
  4. Editplus PHP版
  5. STM32 电机教程 18 - MC Workbench生成工程代码的电机调试
  6. python统计英文句子每个单词字数_Python小书3-文本英文单词统计
  7. SQL Server AlwaysOn 集群 关于主Server IP与Listener IP调换的详细测试
  8. leetcode620. 有趣的电影(SQL)
  9. 数组实例的fill()方法 fill()方法
  10. java变量,初始化快,构造函数的执行顺序
  11. Android 节日短信送祝福(功能篇:2-短信历史记录Fragment的编写)
  12. 【转载】Android 工具-adb原理
  13. sql server存储过程解密
  14. 进程管理:fork与exec函数及fork子进程和父进程
  15. linux操作系统原理【3】
  16. 剧情插件Cutscene Creator uSequencer 1.3.7.1使用说明二
  17. usaco - Raucous Rockers
  18. Android webview调用本地文件选择失败解决
  19. Typecho权限管理插件 - 权限狗
  20. origin出图重合部分变色了,怎么办?

热门文章

  1. pyecharts柱状图颜色设置
  2. iOS开发中文件管理者NSFileManager的使用,收藏使用!
  3. 《乐高EV3机器人搭建与编程》一1.4 特殊的部件
  4. springboot表单验证
  5. .c 与 .cpp .h与.hpp 的区别
  6. 赛迪智库丨谁能成功抢位操作系统,谁就能掌握未来汽车产业发展的主动权
  7. 躺赚,每天自动签到30多个应用,你也可以
  8. 学习编写自动化测试脚本——用脚本取代键盘鼠标操作浏览器
  9. C8051F340 USB0 寄存器访问
  10. Keras-模型编译