标签: android-11

Android Studio BumbleBee 配对 wifi 不工作

我正在尝试通过 adb wifi 连接我的 Android 11 设备与 android studio,但它不起作用。

我更新到最新的稳定版 bumblebee 并更新了我的 SDK 我尝试关闭电脑上的防火墙,但结果相同。

当我使用二维码方法时,我的 Android 手机仅显示“配对设备”,但没有任何反应 如果我尝试使用代码方法,Android Studio 仅显示“正在搜索设备”,但没有任何反应

是的,我在手机上启用了无线调试,并且连接到同一个 wifi 网络。

不知道是电脑问题还是手机问题。我没有任何其他 Android11+ 手机可以尝试

android adb android-studio android-11 android-studio-bumblebee

62
推荐指数
5
解决办法
4万
查看次数

Intent.resolveActivity 在 API 30 中返回 null

查看intent.resolveActivity != null 但启动 Intent 会引发 ActivityNotFound 异常,我在打开浏览器或具有深度链接的应用程序时写道:

private fun openUrl(url: String) {
    val intent = Intent().apply {
        action = Intent.ACTION_VIEW
        data = Uri.parse(url)
//        setDataAndType(Uri.parse(url), "text/html")
//        component = ComponentName("com.android.browser", "com.android.browser.BrowserActivity")
//        flags = Intent.FLAG_ACTIVITY_CLEAR_TOP + Intent.FLAG_GRANT_READ_URI_PERMISSION
    }
    val activityInfo = intent.resolveActivityInfo(packageManager, intent.flags)
    if (activityInfo?.exported == true) {
        startActivity(intent)
    } else {
        Toast.makeText(
            this,
            "No application can handle the link",
            Toast.LENGTH_SHORT
        ).show()
    }
}
Run Code Online (Sandbox Code Playgroud)

它不起作用。在 API 30 模拟器中找不到浏览器,而一个常见的解决方案有效:

private fun openUrl(url: String) {
    val intent …
Run Code Online (Sandbox Code Playgroud)

android android-manifest android-intent activitynotfoundexception android-11

56
推荐指数
5
解决办法
2万
查看次数

Android 11 Scoped 存储权限

我试图更好地了解 Android 11 版本发布后我将能够做什么。

我的应用程序使用提供的图像的文件路径Environment.getExternalStorageDirectory()来创建照片相册,但使用Android 11 我将无法直接访问 files

根据Android开发人员文档,他们最近引入了该MANAGE_EXTERNAL_STORAGE权限,但我不明白添加此权限是否可以继续访问文件Environment

有没有人有想法???

谢谢

2021 年 1 月更新

我在 Android 11 虚拟设备上尝试了我的应用程序,即使没有请求MANAGE_EXTERNAL_STORAGE许可,它似乎也能完美运行!

阅读 Android Developers 上的文档,似乎使用FILEAPI 仅访问照片和媒体位置的应用程序可以继续工作,但我不确定

有没有人更了解Android文档???

android file android-developer-api android-storage android-11

44
推荐指数
6
解决办法
5万
查看次数

requestLegacyExternalStorage 在 Android 11 - API 30 中不起作用

Google 最近引入了一些与 API 29 中的存储 API 相关的更改,例如范围存储,我们通过在清单中添加“requestLegacyExternalStorage=true”来选择退出。但是现在当我定位SdkVersion 30 时,这似乎不再起作用。在此更改后,下载目录中的某些文件未列出 (File.listFiles)。

java storage android android-11

30
推荐指数
2
解决办法
4万
查看次数

具有 RequestMultiplePermissions 合约的 ActivityResultLauncher 在启动时不显示权限 UI

我正在尝试使用ActivityResultLauncherwith请求权限ActivityResultsContract.RequestMultiplePermissions

import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import android.Manifest;

import androidx.activity.result.ActivityResultLauncher;
import.androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;

public class MainActivity extends AppCompatActivity {

    final String[] PERMISSIONS = {
            Manifest.permission.FOREGROUND_SERVICE,
            Manifest.permission.ACCESS_FINE_LOCATION,
            Manifest.permission.ACCESS_BACKGROUND_LOCATION,
            Manifest.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
    };

    private ActivityResultContracts.RequestMultiplePermissions multiplePermissionsContract;
    private ActivityResultLauncher<String[]> multiplePermissionLauncher;    

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        multiplePermissionsContract = new ActivityResultContracts.RequestMultiplePermissions();
        multiplePermissionLauncher = registerForActivityResult(multiplePermissionsContract, isGranted -> {
            Log.d("PERMISSIONS", "Launcher result: " + isGranted.toString());
            if (isGranted.containsValue(false)) {
                Log.d("PERMISSIONS", "At least one of the permissions was not granted, launching …
Run Code Online (Sandbox Code Playgroud)

android android-activity android-permissions android-11

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

如何在 Android R 中设置全屏?

我需要在我的应用程序中全屏显示一个屏幕。为此,我正在使用此代码:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    requestWindowFeature(Window.FEATURE_NO_TITLE)
    window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN)
    setContentView(R.layout.activity_camera_photo)
Run Code Online (Sandbox Code Playgroud)

但是,该WindowManager.LayoutParams.FLAG_FULLSCREEN标志已被弃用。

我的应用程序支持 Android Lollipop (API 21) 到 Android R (API 30)。使屏幕全屏显示的正确方法是什么?

android fullscreen android-layout android-5.0-lollipop android-11

23
推荐指数
3
解决办法
2万
查看次数

Android 11 (R) 文件路径访问

根据 docs 文件路径访问权限在 Android R 中被授予:

从 Android 11 开始,具有 READ_EXTERNAL_STORAGE 权限的应用可以使用直接文件路径和本机库读取设备的媒体文件。这项新功能使您的应用程序可以更顺畅地与第三方媒体库配合使用。

问题是我无法从中获取文件路径MediaStore,那么我们应该如何读取无法访问/检索的文件路径?有没有办法,我不知道,我们可以从中获取文件路径MediaStore


此外,文档说明如下

所有文件访问

某些应用程序的核心用例需要广泛的文件访问,例如文件管理或备份和恢复操作。他们可以通过执行以下操作获得所有文件访问权限:

  1. 声明 MANAGE_EXTERNAL_STORAGE 权限。
  2. 将用户引导至系统设置页面,他们可以在其中为您的应用启用允许访问管理所有文件选项。

此权限授予以下权限:

  • 对共享存储中所有文件的读访问和写访问。
  • 访问 MediaStore.Files 表的内容。

但是我不需要所有文件访问权限,我只希望用户从中选择一个视频MediaStore并将文件路径传递给FFmpeg(它需要一个文件路径)。我知道我不能再使用该_data列来检索文件路径。


请注意:

  • 我知道 aUri是从MediaStore文件中返回的,并且不指向文件。
  • 我知道我可以将文件复制到我的应用程序目录并将其传递给FFmpeg,但我可以在 Android R 之前做到这一点。
  • 我不能传递FileDescriptorFFmpeg我不能使用/proc/self/fd/(我/proc/7828/fd/70: Permission denied从 SD 卡中选择文件时得到),看看这个问题

那我该怎么办,我是不是错过了什么?是什么意思can read a device's media files using direct file paths and native libraries …

android android-11

19
推荐指数
3
解决办法
2万
查看次数

使用 Android 11 提供了大量有关访问 SQLiteDatabase 接口的输出日志

我在模拟器中使用 API 30 - Android 11.0。每当我运行我的应用程序时,我都会在日志中收到 200 多行以下消息:

    Accessing hidden method Landroid/database/sqlite/SQLiteDatabase;->yieldIfContendedHelper(ZJ)Z 
(greylist-max-o, linking, denied)
Run Code Online (Sandbox Code Playgroud)

但是,对于我的应用程序,我什至没有使用数据库。在谷歌搜索,我来到这个基本上提到了在Android 11中添加到SDK的所有非SDK接口。

那么,当我的应用程序甚至没有使用任何数据库时,是否有可能知道为什么我会收到这么多该消息的日志?

android android-11

17
推荐指数
1
解决办法
9654
查看次数

更新到 Android 11 后 Admob 中出现严格的安全 Cookie 政策错误

更新我的应用程序以使用 api 级别 30(Android R,11)编译后,我看不到 admob 测试广告,并且我在日志中收到此错误:

严格的安全 Cookie 政策不允许为http://googleads.g.doubleclick.net/为定位 >= R 的应用程序设置安全 cookie 。请为此 URL 使用“https:”方案或省略“安全”指令在 cookie 值中。

我使用的是最后一个 admob 版本,并且在 gradle 或 manifest 中没有“org.apache.http.legacy”引用。

android admob android-11

16
推荐指数
1
解决办法
3939
查看次数

在 android 11 中使用 intent.resolveActivity 调用此方法时,请考虑在清单中添加查询声明

我有一个扩展功能,用于为我的活动打开一个意图:

fun Activity.openIntent(action: String?, type: String?, uri: Uri?) {
    Intent()
        .apply {
            action?.let { this.action = it }
            uri?.let { this.data = it }
            type?.let { this.type = it }
        }
        .also { intent ->
            packageManager?.let {
                if (intent.resolveActivity(it) != null)
                    startActivity(intent)
                else
                    showToast(R.string.application_not_found)
            }
        }
}
Run Code Online (Sandbox Code Playgroud)

我的targetSdkVersion30。它给了我一个警告intent.resolveActivity(it)

调用此方法时,请考虑向清单添加查询声明。

那么我应该怎么做才能解决这个警告呢?

android kotlin android-11

16
推荐指数
3
解决办法
3907
查看次数