我正在尝试通过 adb wifi 连接我的 Android 11 设备与 android studio,但它不起作用。
我更新到最新的稳定版 bumblebee 并更新了我的 SDK 我尝试关闭电脑上的防火墙,但结果相同。
当我使用二维码方法时,我的 Android 手机仅显示“配对设备”,但没有任何反应 如果我尝试使用代码方法,Android Studio 仅显示“正在搜索设备”,但没有任何反应
是的,我在手机上启用了无线调试,并且连接到同一个 wifi 网络。
不知道是电脑问题还是手机问题。我没有任何其他 Android11+ 手机可以尝试
android adb android-studio android-11 android-studio-bumblebee
查看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
我试图更好地了解 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
Google 最近引入了一些与 API 29 中的存储 API 相关的更改,例如范围存储,我们通过在清单中添加“requestLegacyExternalStorage=true”来选择退出。但是现在当我定位SdkVersion 30 时,这似乎不再起作用。在此更改后,下载目录中的某些文件未列出 (File.listFiles)。
我正在尝试使用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) 我需要在我的应用程序中全屏显示一个屏幕。为此,我正在使用此代码:
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
根据 docs 文件路径访问权限在 Android R 中被授予:
从 Android 11 开始,具有 READ_EXTERNAL_STORAGE 权限的应用可以使用直接文件路径和本机库读取设备的媒体文件。这项新功能使您的应用程序可以更顺畅地与第三方媒体库配合使用。
问题是我无法从中获取文件路径MediaStore,那么我们应该如何读取无法访问/检索的文件路径?有没有办法,我不知道,我们可以从中获取文件路径MediaStore?
此外,文档说明如下:
所有文件访问
某些应用程序的核心用例需要广泛的文件访问,例如文件管理或备份和恢复操作。他们可以通过执行以下操作获得所有文件访问权限:
- 声明 MANAGE_EXTERNAL_STORAGE 权限。
- 将用户引导至系统设置页面,他们可以在其中为您的应用启用允许访问管理所有文件选项。
此权限授予以下权限:
- 对共享存储中所有文件的读访问和写访问。
- 访问 MediaStore.Files 表的内容。
但是我不需要所有文件访问权限,我只希望用户从中选择一个视频MediaStore并将文件路径传递给FFmpeg(它需要一个文件路径)。我知道我不能再使用该_data列来检索文件路径。
请注意:
Uri是从MediaStore文件中返回的,并且不指向文件。FFmpeg,但我可以在 Android R 之前做到这一点。FileDescriptor给FFmpeg我不能使用/proc/self/fd/(我/proc/7828/fd/70: Permission denied从 SD 卡中选择文件时得到),看看这个问题。那我该怎么办,我是不是错过了什么?是什么意思can read a device's media files using direct file paths and native libraries …
我在模拟器中使用 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接口。
那么,当我的应用程序甚至没有使用任何数据库时,是否有可能知道为什么我会收到这么多该消息的日志?
更新我的应用程序以使用 api 级别 30(Android R,11)编译后,我看不到 admob 测试广告,并且我在日志中收到此错误:
严格的安全 Cookie 政策不允许为http://googleads.g.doubleclick.net/为定位 >= R 的应用程序设置安全 cookie 。请为此 URL 使用“https:”方案或省略“安全”指令在 cookie 值中。
我使用的是最后一个 admob 版本,并且在 gradle 或 manifest 中没有“org.apache.http.legacy”引用。
我有一个扩展功能,用于为我的活动打开一个意图:
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)
我的targetSdkVersion是30。它给了我一个警告intent.resolveActivity(it):
调用此方法时,请考虑向清单添加查询声明。
那么我应该怎么做才能解决这个警告呢?