private
void
requestPermission
(
)
{
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
R
)
{
if
(
Environment
.
isExternalStorageManager
(
)
)
{
autoObtainLocationPermission
(
)
;
}
else
{
Intent
intent
=
new
Intent
(
Settings
.
ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION
)
;
intent
.
setData
(
Uri
.
parse
(
"package:"
+
getPackageName
(
)
)
)
;
startActivityForResult
(
intent
,
REQUEST_CODE
)
;
}
else
{
autoObtainLocationPermission
(
)
;
* 自动获取权限
private
void
autoObtainLocationPermission
(
)
{
if
(
ContextCompat
.
checkSelfPermission
(
this
,
Manifest
.
permission
.
ACCESS_FINE_LOCATION
)
!=
PackageManager
.
PERMISSION_GRANTED
||
ContextCompat
.
checkSelfPermission
(
this
,
Manifest
.
permission
.
CAMERA
)
!=
PackageManager
.
PERMISSION_GRANTED
||
ContextCompat
.
checkSelfPermission
(
this
,
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
)
!=
PackageManager
.
PERMISSION_GRANTED
||
ContextCompat
.
checkSelfPermission
(
this
,
Manifest
.
permission
.
READ_PHONE_STATE
)
!=
PackageManager
.
PERMISSION_GRANTED
||
ContextCompat
.
checkSelfPermission
(
this
,
Manifest
.
permission
.
RECORD_AUDIO
)
!=
PackageManager
.
PERMISSION_GRANTED
ActivityCompat
.
requestPermissions
(
this
,
new
String
[
]
{
Manifest
.
permission
.
ACCESS_FINE_LOCATION
,
Manifest
.
permission
.
CAMERA
,
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
,
Manifest
.
permission
.
READ_PHONE_STATE
,
Manifest
.
permission
.
RECORD_AUDIO
}
,
PERMISSION_STATUS
)
;
}
else
{
permissionFlag
=
true
;
@Override
public
void
onRequestPermissionsResult
(
int
requestCode
,
@NonNull
String
[
]
permissions
,
@NonNull
int
[
]
grantResults
)
{
switch
(
requestCode
)
{
case
PERMISSION_STATUS
:
{
if
(
grantResults
.
length
>
0
&&
grantResults
[
0
]
==
PackageManager
.
PERMISSION_GRANTED
&&
grantResults
[
1
]
==
PackageManager
.
PERMISSION_GRANTED
&&
grantResults
[
2
]
==
PackageManager
.
PERMISSION_GRANTED
&&
grantResults
[
3
]
==
PackageManager
.
PERMISSION_GRANTED
&&
grantResults
[
4
]
==
PackageManager
.
PERMISSION_GRANTED
)
{
permissionFlag
=
true
;
}
else
{
ToastUtils
.
showShort
(
this
,
"请打开手机相应权限"
)
;
break
;
@Override
protected
void
onActivityResult
(
int
requestCode
,
int
resultCode
,
@Nullable
Intent
data
)
{
super
.
onActivityResult
(
requestCode
,
resultCode
,
data
)
;
if
(
requestCode
==
REQUEST_CODE
&&
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
R
)
{
if
(
Environment
.
isExternalStorageManager
(
)
)
{
Log
.
d
(
"权限判断--------》"
,
"含有权限"
)
;
autoObtainLocationPermission
(
)
;
}
else
{
Log
.
d
(
"权限判断--------》"
,
"获取权限失败"
)
;
Intent
intent
=
new
Intent
(
Settings
.
ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION
)
;
intent
.
setData
(
Uri
.
parse
(
"package:"
+
getPackageName
(
)
)
)
;
startActivityForResult
(
intent
,
REQUEST_CODE
)
;
}
else
{
autoObtainLocationPermission
(
)
;
//配置文件<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>//源代码 /** * 请求许可权限 */ private void requestPermission() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { // 先判断有没有权限
Intent intent = new Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, Request_Code);
安卓
11
改变了此前安卓
系统
对于文件管理的规则,在安卓
11
上,
文件读写
变成了特殊
权限
。
应用
默认
只能读写自己的目录
Android
11
系统
对
应用
写入
权限
做了严格的限制。本文介绍如何
获取
文件读写
权限
。项目中 build.gradle 的targetSdkVersion >= 29 ,会出现读写问题为了能直接usb安装,gradle.properties 需要设置(否则,在安装时会报异常:-15)
Android
Manifest添加
权限
设置
申请
权限
,主要用到如下4个函数
申请
权限
是否应该显示请
一、其实
Android
11
(targetSdkVersion 30)及以上在
Android
Manifest.xml声明MANAGE_EXTERNAL_STORAGE
权限
(不在
Android
Manifest.xml声明获得“所有文件访问
权限
”按钮为灰色不能授权)在加上下面的判断就能基本解决问题:
//
获取
存储
权限
private void getPermissions() {
// 普通
权限
:只需要在清单文件中注册即可
// 危险
权限
(
Android
6.0 之
<uses-permission
android
:name="
android
.permission.READ_EXTERNAL_STORAGE" />
<uses-permission
android
:name="
android
.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission
android
:name="
android
.p..
最近在做适配管理,安卓
11
采用了新的内存分区模式,所以会出现
权限
问题,无法
获取
到
权限
,我们需要
获取
到全部
文件读写
权限
,翻看安卓谷歌开发者文档后找到了解决办法,下面是解决方法。
// 操作将用户引导至一个
系统
设置页面,在该页面上,用户可以为您的
应用
启用以下选项:
授予
所有文件的管理
权限
。
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R || Environment.isExternalStorageManager()) {
最近工作上遇到几个USB模块在
android
平台上适配使用的情况,所以要用到USB
权限
获取
问题
##USB
权限
获取
有以下2种方式:
一、直接在
Android
Manifest.xml文件中进行如下配置:
<activity
android
:name=.DemoCustom
Android
USBActivity
android
:label=@string/app_name>
<intent>
<action
android
:name=
android
.intent.action.MAIN>
<category
android
:
在
Android
11
开发中,app会遇到使用绝对路径无法打开某文件的情况(文件存在根目录下,
获取
到的路径为:/storage/emulated/0/XXX.txt),而使用相对路径打开文件后(
获取
到的路径为:/data/user/0/com.XXX/files/XXX.txt),无法修改原文件,因为使用相对路径打开的文件会在沙盒环境下打开,就算修改了内容也只是修改了沙盒环境下文件的内容,原文件没有任何影响。
如果你想要读写整个设备上的文件,需要使用Intent跳转到一个专门的授权页面,引导用户手动授权。取
您好!
Android
11
获取
蓝牙
权限
的方法是在
Android
Manifest.xml文件中添加以下
权限
声明:
<uses-permission
android
:name="
android
.permission.BLUETOOTH" />
<uses-permission
android
:name="
android
.permission.BLUETOOTH_ADMIN" />
并在运行时请求这些
权限
。具体实现方式可以参考
Android
官方文档中的说明。
ERROR: Connection refused: connect
m0_66123790:
ERROR: Connection refused: connect
moon清泉:
ERROR: Connection refused: connect
moon清泉:
ERROR: Connection refused: connect
m0_66123790: