Android权限申请、相册选择图片、拍照、获取联系人、页面跳转

Permision 权限申请封装,页面跳转封装

github地址

目前第一版封装了:页面启动、页面启动回调、获取通讯录联系人、获取相册图片、拍照获取图片、单条权限申请、多条权限申请,且已适配到Android 13

导入

    maven { url 'https://jitpack.io' }
   implementation 'com.github.GoodWeking:Permission:1.3'

权限申请

权限申请支持单条权限和多条权限申请,支持强制拒绝后弹窗提示用户并引导区设置也开启权限

//请求单条权限
launchPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) {Toast.makeText(this, "是否成功:$it", Toast.LENGTH_SHORT).show()
}
//多条权限申请
launchPermission(arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION,  android.Manifest.permission.READ_SMS)) {Toast.makeText(this, "是否成功:$it", Toast.LENGTH_SHORT).show()
}

默认强制拒绝弹窗提示

 AlertDialog.Builder(context).setMessage(resources.getString(R.string.register_permission_dialog_msg)).setPositiveButton(resources.getString(R.string.register_permission_dialog_confirm)) { _, _ ->openSettingsPermission()}.setNeutralButton(resources.getString(R.string.register_permission_dialog_cancel),null).show()
image 支持自定义
 launchPermission(permissions = arrayOf(android.Manifest.permission.ACCESS_FINE_LOCATION,android.Manifest.permission.READ_SMS),tipDialog = {//自定义提示引导AlertDialog.Builder(context).setMessage(resources.getString(R.string.register_permission_dialog_msg)).setPositiveButton(resources.getString(R.string.register_permission_dialog_confirm)) { _, _ ->openSettingsPermission()}.setNeutralButton(resources.getString(R.string.register_permission_dialog_cancel),null).show()}) {//权限申请结果   }
launchPermission(permissions = android.Manifest.permission.ACCESS_FINE_LOCATION,tipDialog = {//自定义提示}) {Toast.makeText(this, "是否成功:$it", Toast.LENGTH_SHORT).show()}

跳转设置页

fun Context.openSettingsPermission() {Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply {data = Uri.parse("package:$packageName")startActivity(this)}
}

选择联系人

目前只封装了获取单个联系人以兼容到 api 33,在调用时请添加权限到清单文件 Manifest.permission.READ_CONTACTS

launchContact {//it.name 联系人姓名//it.phone 联系人电话//it.saveDate 保存时间//it.contactId 联系人id
}

Activity 跳转

launch<ContentActivity>("value1" to "111", "value2" to 222)launchForResult<ContentActivity>("customer" to "mainActivity") { rsultCode: Int, data: Intent? ->//回传值回调     }

获取图片

相册获取选择结果都是存放在sd的下载目录,需要再清单文件添加文件读写权限Android13以下Manifest.permission.WRITE_EXTERNAL_STORAGE以上Manifest.permission.READ_MEDIA_IMAGES

path=Pair
first:存放文件夹
second:文件名

    //相册获取 
launchPic(path="camera" to ("${System.currentTimeMillis()}.jpg")) {ivImage.setImageURI(it.uri)
}

相机获取需要再清单文件添加权限Android13以上Manifest.permission.READ_MEDIA_IMAGES,Manifest.permission.CAMERA以下Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.CAMERA

launchCamera(path="camera" to ("${System.currentTimeMillis()}.jpg")) {//it.uri //it.file 从uri转出的图片
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部