如何绕过Android得主动获取权限, 获取到我们需要得数据
移动端出海上架谷歌市场都知道, 现在金融类得APP是不让拿通讯录权限、文件权限、位置精确权限、无法获取APP所有安装应用列表、获取手机图片并上传
那有没有办法可以拿到,经过查资料和线上APP验证,已经完美解决了相关问题,并在线上得到过验证可行性
1、不获取权限就能获取通讯录联系人的姓名和手机号, 实现方式如下
private var contactLauncher: ActivityResultLauncher<Intent>? = null
调用方式
if (contactLauncher != null) {
contactLauncher!!.launch(
Intent(
Intent.ACTION_PICK,
ContactsContract.CommonDataKinds.Phone.CONTENT_URI
)
)
} else {
// 如果不能获取,可以让手动输入
}
//获取到得通讯录处理
contactLauncher = registerForActivityResult(
ActivityResultContracts.StartActivityForResult(),
activityResultRegistry
) { result ->
if (result.data == null) {
return@registerForActivityResult
}
val contactUri = result.data?.data
contactUri?.let {
contentResolver.query(contactUri, null, null, null, null).use { cursor ->
if (cursor != null && cursor.moveToFirst()) {
isCanSelect = true
var number = ""
var name = ""
val numberIndex =
cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER)
val nameIndex =
cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)
if (numberIndex != -1) {
number = cursor.getString(numberIndex)
}
if (nameIndex != -1) {
name = cursor.getString(nameIndex)
}
...
} else {
// 如果不能获取,可以让手动输入
}
}
}
}
2、如何解决安卓11以及以上无法读取第三方应用包名问题
只需要在App得 AndroidManifest.xml 中加入如下代码即可实现获取全部应用列表
<queries>
<intent>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent>
</queries>
3、如何解决需要APP存储权限问题
一般我们出海金融APP都需OCR拍照之类得功能,拍完照片要存储怎么办, 其实就算没有文件存储权限, 我们可以使用内部存储方式,这种方式是不需要主动申请权限得
还有一类场景就是,我们有时候需要上传支付凭证图片,没有读写权限如何能获取到照片呢,经过我不断得查阅资料和尝试, 发现了一种可以绕过权限获取到图片得方式,线上验证确实可行具体方式需要得话可以联系我
4、如何获取定位信息,缺失率小于5% 现在谷歌不让我们获取精确得位置权限,其实还可以用非精确得位置权限
线上验证确实可行具体方式需要得话可以联系我