标签: android-13

Android 13 - 为不是从 Google Play 安装的 APK 启用辅助功能服务

Android 13 的 Beta 版本上,用户无法从“设置”应用启用辅助功能。当用户尝试执行此操作时,会出现错误:

受限设置
为了您的安全,此设置目前不可用。

如何在 Android 13 上启用辅助功能?

android accessibilityservice android-13

10
推荐指数
1
解决办法
6万
查看次数

精细媒体权限 Android 13 API 33

我已经将我的项目升级到 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

关于如何解决此问题以及应遵循哪些步骤有什么想法吗?

java android kotlin android-permissions android-13

10
推荐指数
1
解决办法
1万
查看次数

为什么每个应用程序语言在 Android 13 之前版本中无法与应用程序上下文一起使用

我正在尝试实现 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 android-13

10
推荐指数
1
解决办法
2409
查看次数

空对象引用上的“boolean java.lang.Class.isInterface()”

我在 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 nullpointerexception parcelable kotlin android-13

10
推荐指数
1
解决办法
1732
查看次数

“areNotificationsEnabled()”和“checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS)”之间有区别吗

谷歌表示,所有针对 Android 13(API 级别 33)的应用程序为了能够使用通知,都必须请求Manifest.permission.POST_NOTIFICATIONS权限。

我的问题是:哪种方法可以检查该权限是否已被授予?

  1. 使用NotificationManagerCompat.areNotificationsEnabled()
  2. 使用类似的东西ContextCompat.checkSelfPermission(this, Manifest.permission.POST_NOTIFICATIONS)

它们之间有什么区别吗?这两个选项似乎相互依赖:例如,如果我转到设备应用程序设置并禁用通知,那么我会看到通知权限也会自动从应用程序撤销:

在此输入图像描述

在此输入图像描述

反之亦然。

notifications android android-13

9
推荐指数
1
解决办法
2633
查看次数

GestureDetector.OnGestureListener 重写方法在 Android API 33 中不起作用

我已经在我的 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)

android kotlin android-13 gesture-detection

8
推荐指数
2
解决办法
2329
查看次数

Android Studio 错误:一次 UI 5 升级 (Android 13) Adb 在 data/data/ 文件夹上执行 shell 命令 pm list 时出错

升级 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

image Android Studio 的设备文件资源管理器

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

我可以获得一些如何设置 Android Studio 以 正确使用 …

adb android-studio android-studio-3.1 android-13

8
推荐指数
1
解决办法
4745
查看次数

当我尝试设置 Android 13 SDK 时出现“不支持的值:Tiramisu”

我按照此页面: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

7
推荐指数
1
解决办法
6348
查看次数

在每个应用程序语言中,如果系统区域设置不同,如何在 API &lt; 33 中获取应用程序区域设置?

Android 刚刚在 Android API 级别 33 中引入了每应用程序语言首选项,它允许您更改应用程序语言,而不管系统语言如何。

为了支持运行 API <= 32 的设备,Android 在Androidx Appcompat: androidx.appcompat:appcompat:1.6.0-beta01中添加了: AppCompatDelegate.setApplicationLocales(appLocale);

现在应用程序语言可以与系统语言不同。

现在有2种情况:

  1. 在 API <= 32 中:
    Locale.getDefault()将返回与应用程序相同的系统区域设置。
  2. 在 API 33 中:
    Locale.getDefault()将返回应用程序区域设置而不是系统。并获取系统区域设置,LocaleManagerCompat.getSystemLocales(this).get(0)即可使用。

我的问题:如何在 Android API <= 32 中获取应用程序区域设置 当使用向后兼容性而不需要使用时Context

我发现与我需要的相反。

我试图存储区域设置,然后在需要时获取它,但这种方法需要Context这是不合格的。

android locale localization android-13

7
推荐指数
1
解决办法
2628
查看次数

Android 13 - 需要蓝牙特权权限吗?

仅在 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 bluetooth bluetooth-lowenergy android-13

7
推荐指数
1
解决办法
6096
查看次数