问题标签 [android-api-30]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
158 浏览

android - Android 11 中的安全异常

我的 android apk 在 android 10 和以前的版本上运行良好,但在 android 11 中,我的应用程序在我从 google play 商店下载后立即崩溃,它只显示启动画面,然后自动应用程序崩溃

我已经给出了以下权限清单:相机、位置、存储、电话

但它抛出安全异常:

也无法进一步调试,因为应用程序立即崩溃

0 投票
0 回答
55 浏览

android - 使用 Android 11 (API 30) 从外部存储中的任意位置读取媒体文件

我是一名新手 Android 开发人员,需要一些关于在 API 30 下从外部存储读取的最佳实践的指导。顺便说一句,我在 API 28 中对此进行了介绍 - 但我很难理解 API 30 的工作原理。

示例用例:我将计算机中的媒体文件存储在我的 Android 设备上的多个文件夹中(根据项目和事件进行结构化),我想从我的应用程序中访问它们。我希望能够在 Google Play 上发布该应用程序。

问题(根据我有限的理解):访问媒体文件不是 MANAGE_EXTERNAL_STORAGE 权限的有效用例,MediaStore API只允许我访问 /DCIM 和 /Pictures,其元数据不包括文件路径。

问题:我的理解正确吗?我是否不允许访问存储我的文件的目录或嵌入目录结构中的元数据?
或者有没有一种方法应该起作用?

0 投票
0 回答
33 浏览

android - 如何在 Android API30 中保存屏幕截图

我正在尝试将图像保存到 Android 存储中,它运行良好,但是当涉及到权限对话框时,它会有点中断。

当我拒绝对 API 30 的许可时,它不会再询问,但在较低的情况下效果很好。

这是我的清单

在我的活动中,我有一个存储图像的按钮,并且我有此代码

当我点击按钮时,我称之为updateOrRequestPermissions. 我错过了什么?

0 投票
3 回答
133 浏览

java - 作为开发人员对 Android 上的文件和媒体权限的担忧

我正在开发一个将数据保存到数据库中的应用程序,我正在尝试备份和恢复我能够执行的数据库,我的问题是 API30+ 上的“不祥”权限弹出窗口

允许管理所有文件

允许此应用访问您设备上的修改和删除文件.....

允许此应用访问、修改和删除设备或任何连接的存储设备上的文件吗?这个应用程序可能会在不询问您的情况下访问文件。

我不想做任何这些事情,我只是想要允许做备份/恢复的事情

这是我请求许可的代码:

有没有更好的方法来处理这个?

0 投票
1 回答
120 浏览

android - Android 的某些 EditText 字段不响应长按(API 30+ with layout_width 0dp)

我想知道是否有其他人遇到过这个奇怪的错误。我的布局很复杂,但本质上是带有 EditText 字段的视图持有者行。

在我将目标 SDK 更新到 API 30 之前,它运行良好。

以API 30 为目标后,我的一些EditText 字段不响应“焦点触摸事件”(光标句柄不显示,不能长按,也不能选择任何文本)。您仍然可以在字段中键入并通过点击移动光标。同样,一些文本字段工作得很好,而另一些则受到此错误的影响。

在此处输入图像描述

^ 图像不是我的应用程序,只是为了显示光标处理程序以供理解。

约束布局和线性布局都有相同的错误。

如果我将文本字段宽度更改为wrap_content它适用于所有文本字段,但这不符合我的设计。我需要文本字段来填充可用空间。

我什至尝试手动将宽度设置为随机 dp 值,但它仍然不起作用。

我已经在 < API 30 设备上进行了测试,完全没问题。

我也有用户在生产中报告了这个问题。

我错过了什么?为什么这不适用于 API 30+?

还有其他方法可以让 EditText 字段填充空间吗?

更新(仍未解决):

我已将我的 Android Studio 更新到最新版本Arctic Fox 2020.3.1.。我还将 gradle7.0.3和 kotlin1.5.31以及我的所有库更新到了最新版本。我正在使用androidx.core:core-ktx:1.7.0androidx.constraintlayout:constraintlayout:2.1.2

我进一步调查并发现了更多的怪异之处。以编程方式设置任何文本或任何提示都会导致错误。在 xml 中设置文本或提示,完全没有错误。文本值来自数据库,因此我需要能够以编程方式设置它们。

0 投票
2 回答
79 浏览

android - 通过片段获取父活动

我目前有两个活动,MainActivity 和 ResultActivity,它们都将使用相同的片段 - 收藏夹。我的问题是:如何知道哪个活动包含片段?例如我在Activity ResultActivity中有一个片段A,我怎么知道片段A是包含在ResultActivity还是MainActivity中?

0 投票
0 回答
95 浏览

android - UI Automator 1.0 不适用于 Android API 级别 30 /Android 11 - java.lang.NoClassDefFoundError:解析失败:Landroid/test/RepetitiveTest

我正在通过命令行工具选项使用 UI Automator 1.0 测试框架在 Android 手机上测试应用程序。我能够在 Java 中使用 UIautomated API 编写测试,使用 Android/sdk 工具中的 Android.bat 文件构建 XML,使用 ANT 创建 JAR 并在移动设备中使用 ADB 推送和运行此测试,一切都按预期工作,直到 Android API 28 或安卓 10 手机。

然而,相同的方法不适用于 API 级别 30 或更高级别,即在 Android 11 平台上。和以前一样,我能够构建 XML,创建 Jar 文件并使用 adb 将其推送到目标移动设备,但是当我尝试运行 Jar 文件时,出现以下错误:

同样在我的 Eclipse IDE 中,我注意到 UIautomatorTestCase、UiDevice、UiObject 等 Uiautomator API 被标记为已弃用。

如何在 Android 11 手机上克服此错误?我在 Android 网站上没有看到任何关于此的信息,非常感谢快速帮助。

0 投票
0 回答
32 浏览

android - SQLite 数据库访问/API 30

我想在 Google Play 上更新一个应用程序,并且我认为该应用程序必须针对 API 级别 30 才能进行更新。

该应用程序读取和写入文档,这些文档实际上是 SQLiteDatabase 实例。这些文档存储在 SD 卡或内部存储器中。

该应用程序的当前版本:https ://github.com/EricTerrell/Vault3.Android

目前,该应用针对 API 级别 29 并依赖于 requestLegacyExternalStorage="true" 设置。此外,它断言 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 权限:

https://github.com/EricTerrell/Vault3.Android/blob/main/app/src/main/AndroidManifest.xml#L7-L16

我尝试使用 ACTION_OPEN_DOCUMENT_TREE 和 ACTION_OPEN_DOCUMENT UI 来指定文档的文件夹,并打开给定的文档。

我的问题是这些 UI 返回 Uri,而不是文件路径。我不知道应用程序是否可以使用文件 Uri 而不是路径打开 SQLiteDatabase 数据库。

我阅读了几篇关于如何将 Uri 转换为文件路径的文章。我没有找到任何结论性的东西。谷歌似乎正试图保持文件 Uris 不透明。

此外,给定文件 Uri,我没有找到打开 SQLiteDatabase 的方法:

https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase?hl=en

文档是由桌面应用程序以及Android移动应用程序读取和写入的,因此文件格式确实无法更改。

任何建议都是最受欢迎的!如果有一种方法可以在给定文件 Uri 的情况下打开 SQLiteDatabases,那将解决我的问题。

埃里克·伯格曼-特雷尔

https://www.ericbt.com

https://github.com/EricTerrell

0 投票
0 回答
59 浏览

android - 在 SD 卡上创建目录/文件夹并获得读写访问权限。安卓 11(API:30)

我想通过应用程序在 sdcard 上创建一个目录/文件夹,并且应用程序可以读写该文件夹内的文件。

MANAGE_EXTERNAL_STORAGE需要在 Play 商店中进行人工审核,这就是为什么我需要没有此权限的 Android 11(API:30)解决方案。

我知道我们可以在 App 内存中创建一个文件夹并使用此文件夹来读取/写入不需要 Android 11 任何许可的文件。但在我的情况下,文件夹需要在 sdcard 上创建(“/storage/emulated/0/my_app_directory1/” )并且此文件夹需要读/写权限。如果写权限是不可能的,那么至少读权限。

允许:

示例: Telegram,Whatsapp 在 SD 卡上创建一个文件夹,名称分别为 'Telegram','WhatsApp',分别直接在 sdcard 上,并将所有应用程序相关文件存储在此文件夹中。

有一个选项授予对目录内容的访问权限

我试过了,但无法访问文件夹中的所有文件。

以下代码有时会列出文件夹(screenshort 中的 dir2).png 和 .jpg 文件。有时只列出文件夹。

输出:

我的应用程序的要求:

-> 第一次检查时,如果文件夹(比如:my_app_directory1)不在 sdcard 上,那么它会创建。“/storage/emulated/0/my_app_directory1/”

-> 第二次之后,它使用此文件夹读取/写入自定义文件(不是图像、视频、音频、pdf 文件)。

截图目录结构:

在此处输入图像描述

0 投票
1 回答
52 浏览

android-studio - 我需要安装 Android API 30。但我在 Android Studio 的 SDK 平台列表中看不到该 API。我该如何安装它?

在此处输入图像描述

我需要安装 Android API 30。但我在列表中看不到该 API。我该如何安装它?