我目前正在开发一个api级别在21-29之间的android应用程序。我的问题是api级别29以下不支持某些权限。例如
权限不需要声明api级别29以下。当我定义这个权限并获取所有权限,然后要求用户授予权限时,低于api级别29的应用程序正在崩溃。我需要为不同的api级别定义不同的权限或者如何处理这个问题?
下面是我的manifest.xml
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
这是我获得所有权限的代码
PackageInfo info =
getPackageManager()
.getPackageInfo(
getApplicationContext().getPackageName(), PackageManager.GET_PERMISSIONS);
ActivityCompat.requestPermissions(this, info.requestedPermissions, PERMISSION_CODE);
@Override
public void onRequestPermissionsResult(
int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == PERMISSION_CODE) {
OptionalInt minValuePermission = Arrays.stream(grantResults).min();
if (minValuePermission.isPresent()
&& minValuePermission.getAsInt() == PackageManager.PERMISSION_GRANTED) {/**/}
您不需要为不同的OS版本声明不同的列表--稍后引入的权限将在较低的平台上被忽略/忽略
此外:并非所有权限都可以通过activitycompat.requestPermissions
获得,forreground_service
不适合shure(应该自动授予),您不应该要求它。因此,您不应该通过PackageManager
获得所有声明权限的完整列表,而是使用运行时perms创建自己的Java/Kotlin数组
ActivityCompat.requestPermissions(this,
// below your array with runtime permissions
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
PERMISSION_CODE);
SOFADashboard 使用了一些三方开源组件,他们分别是: Spring under Apache 2.0 license Spring Boot under Apache 2.0 license SLF4j under the MIT License SOFA Bolt under Apache License 2.0 SOFA Bolt under Apache License 2.0
《THE NVL Maker》(以下简称本工具)为非商业软件。与任何商业组织无关。工具开发团队(即官网页面中写明的工具、插件、素材作者)拥有各自所制作部分的著作权。使用本工具制作的游戏工程或其他作品,著作权归属游戏作者。工具本体部分和游戏工程部分,适用的协议不同,具体请见下方。 工具本体的使用、修改权(GPL) 工具本体指《THE NVL Maker》的编辑器(Editor.exe)本体。无论是否
SOFABoot 使用了一些三方开源组件,他们分别是: 一些主要依赖: Spring under Apache 2.0 license Spring Boot under Apache 2.0 license SLF4j under the MIT License sofa-common-tools under Apache 2.0 license 一些扩展依赖: nuxeo under Apac
版权所有 (c)2016,Niushop开源商城团队保留所有权利。 感谢您选择Niushop开源商城(以下简称NiuShop)NiuShop基于 PHP + MySQL的技术开发。 为了使你正确并合法的使用本软件,请你在使用前务必阅读清楚下面的协议条款: 一、本授权协议适用且仅适用于Niushop开源商城系统(以下简称Niushop)任何版本,Niushop开源商城官方拥有最终解释权。 二、著作权
问题内容: 我正在用Java处理数组,但有一个问题。我知道Java中的数组是类似数据类型的集合,如下所示: 上面的声明可以作为一个数组读取,该数组是整数类型的集合。 考虑一下: 在这里,我可以说上面的是一个数组,它是不同数据类型的集合,还是它是相似数据类型(即对象)的数组? 我对此感到困惑和怀疑。在Java中,是否可以创建可以容纳不同数据类型的数组或任何种类的集合? 问题答案: Java中的所有对
API引用 在 1.4 版更改: 声明系统的基本结构现在直接成为SQLAlchemy ORM的一部分。有关这些组件,请参见: declarative_base() declared_attr has_inherited_table() synonym_for() sqlalchemy.orm.as_declarative() 见 声明性扩展 对于其余的声明性扩展类。