<
uses-permission
android:
name
=
"
android.permission.QUERY_ALL_PACKAGES
"
/>
<
uses-permission
android:
name
=
"
android.permission.REQUEST_INSTALL_PACKAGES
"
/>
Android11使用外部存储
Android11并没有完全禁用外部存储
但是只能通过用户手动授予权限的方式来实现,不能通过代码去申请
登记外部存储访问权限
<
uses-permission
android:
name
=
"
android.permission.MANAGE_EXTERNAL_STORAGE
"
/>
<
uses-permission
android:
name
=
"
android.permission.READ_EXTERNAL_STORAGE
"
/>
<
uses-permission
android:
name
=
"
android.permission.WRITE_EXTERNAL_STORAGE
"
/>
<
application
android:
preserveLegacyExternalStorage
=
"
true
"
android:
requestLegacyExternalStorage
=
"
true
"
>
</
application
>
判断有没有完全的外部存储访问权限
Environment
.
isExternalStorageManager
(
)
;
打开完全外部存储访问权限申请页面
Intent intent
=
new
Intent
(
Settings
.
ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION
)
;
intent
.
setData
(
Uri
.
parse
(
"package:"
+
getPackageName
(
)
)
)
;
startActivityForResult
(
intent
,
10001
)
;
Android11使用公共媒体目录
可通过以下API获取公共媒体目录
String documentDirectory
=
Environment
.
getExternalStoragePublicDirectory
(
Environment
.
DIRECTORY_DOCUMENTS
)
.
toString
(
)
;
String downloadDirectory
=
Environment
.
getExternalStoragePublicDirectory
(
Environment
.
DIRECTORY_DOWNLOADS
)
.
toString
(
)
;
Android11使用私有目录
这是Android官方推荐的做法,每个应用只访问自己私有目录的数据
这个目录在存储卡中是不可见的,只有应用自己可以通过代码访问
String privateRoot
=
Environment
.
getExternalStorageDirectory
(
)
+
"/Android/data/"
+
CommonApplication
.
ctx
.
getPackageName
(
)
+
"/"
;
Android11中的分享失败,是由文件访问权限间接引起的
解决以上问题后,分享的问题也就迎刃而解了
定义一个自己的FileProvider,通过FileProvider.getUriForFile来获取Uri,然后通过Uri分享
不会的搜索一下FileProvider和微信分享相关的博客就行了
Android11有了哪些改动Android11主要是进一步收缩了应用权限,在权限管理方面比以前更加严格最主要,影响最大的,就是存储卡访问权限的调整从Android11开始,应用将只能访问自己的私有目录、公共媒体目录、存储卡根目录其它目录,只能判断文件是否存在,但是既不能读取,也不能写入这直接影响到文件选取、拍照录像录音、文件分享、文件下载等功能对开发者影响非常大,特别是严重依赖于外部存储的项目应对方案首先摆正心态,积极适配,不要抗拒变化,逃避问题,影响比较多,我们逐个击破Android1
Android
11
面向开发者引入了一些出色的新功能和 API。以下几部分内容可帮助您了解适用于您的应用的功能并开始使用相关 API。
有关新增、修改和移除的 API 的详细列表,请参阅API 差异报告。如需详细了解新的 API,请访问
Android
API 参考文档— 新 API 会突出显示以方便查看。此外,如需了解平台变更可能会在哪些方面影响您的应用,请务必查看会影响以
Android
R 为目标平台的应用和所有应用的
Android
11
行为变更,以及隐私权变更。
在
Android
11
上,我们可以看到很多的更新都是用来保护隐私的,如果你的app 在使用PackageManger的方法来获取安装的应用列表,
那么在
Android
11
上,就需要做一点改变了。
我们来看看一下获取应用列表的代码,会不会和你的很相似
List<ApplicationInfo> allApps = getPackageManager().getInstalledApplications(0);
for(ApplicationInfo ai : allApps) {
//打开
外部
app,新窗口打开
private void doStartApplicationWithPackageName(String packagename) {
// 通过包名获取此APP详细信息,包括Activities、services、versioncode、name等等
PackageInfo packageinfo = null;
android
12的一些新
权限
Android
12已经出了有一段时间了,相信很多开发者也都注意到
android
12的一些新特性了,今天我整理了一些开发上需要注意的事项,供大家参考。(如果有错误的地方请大家指正)
文章
目录
android
12的一些新
权限
读取应用列表
权限
模糊定位功能前台服务启动限制
读取应用列表
权限
读取应用列表
权限
:
在
Android
11
上在使用PackageManger的方法来获取安装的应用列表,的时候就需要在
Android
Manifest.xml文件中进行申请
android
.permi
针对
Android
10 的
适配
主要涉及到以下几个方面:
1.
权限
适配
:在
Android
10 中,对部分敏感
权限
进行了限制,例如
存储
空间、位置信息等。应用需要进行相应的
权限
适配
,使用新的
权限
请求 API,并在清单文件中声明相应的
权限
。
2. 后台任务限制:
Android
10 中加强了对后台任务的限制,应用不能在后台无限制地执行后台任务。应用需要使用 WorkManager、JobScheduler 等 API 来执行后台任务,或者使用前台服务。
3.
存储
限制:在
Android
10 中,应用只能访问其
私有
目录
和共享
存储
。如果应用需要访问
外部
存储
空间,需要向用户请求授权,并使用新的
存储
API。
4. 系统变化
适配
:
Android
10 中引入了许多新的系统变化,例如全面屏手势、暗黑模式等。应用需要
适配
这些变化,并提供相应的 UI 和功能支持。
5. 安全性
适配
:
Android
10 中加强了安全性,例如应用需要使用 HTTPS 进行网络通信等。应用需要进行相应的安全性
适配
,确保应用的安全性。
6. 设备兼容性
适配
:
Android
10 中推出了许多新的设备类型和硬件特性,例如折叠屏、5G 网络等。应用需要进行相应的设备兼容性
适配
,确保应用在不同设备上的兼容性。
综上所述,
Android
10 的
适配
工作需要开发者综合考虑以上多个方面,并根据应用的实际情况进行相应的
适配
工作。