在Android 13 的 Beta 版本上,用户无法从“设置”应用启用辅助功能。当用户尝试执行此操作时,会出现错误:
受限设置
为了您的安全,此设置目前不可用。
如何在 Android 13 上启用辅助功能?
我已经将我的项目升级到 SDK 33。
我使用新权限 READ_MEDIA_IMAGES 更改了需要访问媒体文件(例如照片)的权限,并且工作正常。
但我需要访问 PDF 文件等文档才能将其上传到服务器,但我找不到有关 android 13 和文档的任何信息。
升级之前,我拥有 READ_EXTERNAL_STORAGE 权限,并且访问了所有文件。
在下面链接的andorid文档中,只提供了READ_MEDIA_IMAGES、READ_MEDIA_VIDEO、READ_MEDIA_AUDIO这三个权限,而不是使用READ_EXTERNAL_STORAGE。
https://developer.android.com/about/versions/13/behavior-changes-13#capsular-media-permissions
关于如何解决此问题以及应遵循哪些步骤有什么想法吗?
我正在尝试实现 Android 13 中引入的按应用程序语言功能。我正在使用 AppCompatDelegate.setApplicationLocales,它在 Android 13 上运行得很好。在 Android 12 上,如果我使用活动上下文而不是应用程序上下文,它就可以运行。以下活动片段在 Android 12 上产生不同的输出。
Log.d(TAG, applicationContext.getString(R.string.settings_change_button))
Log.d(TAG, getString(R.string.settings_change_button))
Run Code Online (Sandbox Code Playgroud)
第一行以电话语言打印,第二行以应用程序语言打印。我添加了 AppLocalesMetadataHolderService,如下所示https://developer.android.com/guide/topics/resources/app-languages#android12-impl
我应该做其他事情来让应用程序上下文使用应用程序语言吗?
我在 Android 13 上遇到此崩溃,代码如下。
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.Class.isInterface()' on a null object reference
Run Code Online (Sandbox Code Playgroud)
代码:
val temp = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU)
bundle.getParcelable(ARG_TAG, Tab::class.java)
else
bundle.getParcelable(ARG_TAG)
Run Code Online (Sandbox Code Playgroud)
DataClass(Tab)如下:
@Keep
@Parcelize
data class Tab(
val data: List<String>? = null,
val icon: String? = null,
val provider: String? = null,
val subtype: String? = null,
val title: String,
val items: Int = 0
) : Parcelable
Run Code Online (Sandbox Code Playgroud) 谷歌表示,所有针对 Android 13(API 级别 33)的应用程序为了能够使用通知,都必须请求Manifest.permission.POST_NOTIFICATIONS权限。
我的问题是:哪种方法可以检查该权限是否已被授予?
NotificationManagerCompat.areNotificationsEnabled()ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS)它们之间有什么区别吗?这两个选项似乎相互依赖:例如,如果我转到设备应用程序设置并禁用通知,那么我会看到通知权限也会自动从应用程序撤销:
反之亦然。
我已经在我的 Activity 上实现了 GestureDetector.OnGestureListener 接口。它在 Android API 32 上运行良好,但在将 Android API 级别从 32 更新到 33 后,我无法覆盖它的方法。当我回滚到 Android API 32 时,它工作正常。
这是我实现该接口的方式:
class ABCActivity: AppCompatActivity(), GestureDetector.OnGestureListener {
override fun onDown(p0: MotionEvent?): Boolean = false
override fun onShowPress(p0: MotionEvent?) = Unit
override fun onSingleTapUp(p0: MotionEvent?): Boolean = false
override fun onLongPress(p0: MotionEvent?) = Unit
override fun onFling(p0: MotionEvent?, p1: MotionEvent?, p2: Float, p3: Float): Boolean = false
override fun onScroll(
event: MotionEvent?,
event1: MotionEvent?,
distanceX: Float,
distanceY: Float
): Boolean {
// …Run Code Online (Sandbox Code Playgroud) 升级 Samsung Galaxy A52 手机后, Android Studio 的 设备文件资源管理器停止正常工作。我在执行 shell 命令 pm list 时
遇到数据/数据/文件夹 错误
有关手机和 Android Studio 的详细信息:
Galaxy A52 (SM-A525F)
内部版本号:A525FXXU4CVJB
Android 版本:T(Android 13)
发布日期:2022-11-21
安全补丁级别:2022-11-01
One UI 5 升级 (Android 13) )
关联
ANDROID STUDIO
Build #AI-213.7172.25.2113.9123335,
构建于 2022 年 9 月 30 日
Android Studio Dolphin | 2021.3.1 补丁 1
运行时版本:11.0.13+0-b1751.21-8125866 amd64 VM:JetBrains sro 的 OpenJDK 64 位服务器 VM

我尝试过adb shell run-as并且可以使用 ls 查看文件

我可以获得一些如何设置 Android Studio 以 正确使用 …
我按照此页面:https://developer.android.com/about/versions/13/setup-sdk 来设置 Android 13 SDK。
在我的build.gradle:
android {
compileSdkVersion("Tiramisu")
defaultConfig {
targetSdkVersion("Tiramisu")
}
}
Run Code Online (Sandbox Code Playgroud)
然后我得到了错误:
> Unsupported value: Tiramisu. Format must be one of:
- android-31
- android-31-ext2
- android-T
- vendorName:addonName:31
Run Code Online (Sandbox Code Playgroud)
我尝试使用“33”而不是“提拉米苏”,但它不起作用。我使用最新的 Android Studio Preview 作为说明。
有人尝试使用 Android 13 SDK 吗?
android android-sdk-tools android-studio android-tiramisu android-13
Android 刚刚在 Android API 级别 33 中引入了每应用程序语言首选项,它允许您更改应用程序语言,而不管系统语言如何。
为了支持运行 API <= 32 的设备,Android 在Androidx Appcompat: androidx.appcompat:appcompat:1.6.0-beta01中添加了: AppCompatDelegate.setApplicationLocales(appLocale);
现在应用程序语言可以与系统语言不同。
现在有2种情况:
Locale.getDefault()将返回与应用程序相同的系统区域设置。Locale.getDefault()将返回应用程序区域设置而不是系统。并获取系统区域设置,LocaleManagerCompat.getSystemLocales(this).get(0)即可使用。我的问题:如何在 Android API <= 32 中获取应用程序区域设置 当使用向后兼容性而不需要使用时Context?
我发现这与我需要的相反。
我试图存储区域设置,然后在需要时获取它,但这种方法需要Context这是不合格的。
仅在 Android 13 设备的生产应用程序中观察到一些崩溃。
所有蓝牙相关权限均在清单中声明,并且附近的设备运行时权限也已到位。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:installLocation="auto">
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission
android:name="android.permission.BLUETOOTH_ADMIN"
android:maxSdkVersion="33" />
<uses-permission
android:name="android.permission.BLUETOOTH_SCAN"
android:usesPermissionFlags="neverForLocation"
tools:ignore="UnusedAttribute" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission
android:name="android.permission.ACCESS_COARSE_LOCATION"
android:maxSdkVersion="31" />
<uses-permission
android:name="android.permission.ACCESS_FINE_LOCATION"
android:maxSdkVersion="31" />
</manifest>
Run Code Online (Sandbox Code Playgroud)
崩溃日志:
Fatal Exception: java.lang.SecurityException: Need BLUETOOTH PRIVILEGED permission: Neither user 10370 nor current process has android.permission.BLUETOOTH_PRIVILEGED.
at android.app.ContextImpl.enforce(ContextImpl.java:2240)
at android.app.ContextImpl.enforceCallingOrSelfPermission(ContextImpl.java:2268)
at android.content.ContextWrapper.enforceCallingOrSelfPermission(ContextWrapper.java:948)
at com.android.bluetooth.Utils.enforceBluetoothPrivilegedPermission(Utils.java:411)
at com.android.bluetooth.gatt.GattService.permissionCheck(GattService.java:474)
at com.android.bluetooth.gatt.GattService.registerForNotification(GattService.java:3801)
at com.android.bluetooth.gatt.GattService$BluetoothGattBinder.registerForNotification(GattService.java:1085)
at com.android.bluetooth.gatt.GattService$BluetoothGattBinder.registerForNotification(GattService.java:1073)
at android.bluetooth.IBluetoothGatt$Stub.onTransact(IBluetoothGatt.java:812)
at android.os.Binder.execTransactInternal(Binder.java:1285)
at android.os.Binder.execTransact(Binder.java:1244)
Run Code Online (Sandbox Code Playgroud) android-13 ×10
android ×9
kotlin ×3
adb ×1
bluetooth ×1
java ×1
locale ×1
localization ×1
parcelable ×1