我想找到设备上安装的电子邮件客户端并重定向该应用程序上的电子邮件 ID 以发送电子邮件。它在 android 10 上运行良好,但在 android 11 中不起作用。我找到了有关Android 11 上的包可见性过滤的文章。我不明白如何在android 11中实现此代码功能
request?.url.toString().startsWith("mailto:") -> {
val intent = Intent(Intent.ACTION_SENDTO)
intent.type = "message/rfc822"
intent.data = Uri.parse(request?.url.toString())
view?.context?.packageManager?.let { packageManager ->
if (packageManager.resolveActivity(intent, 0) != null) {
view.context?.startActivity(intent)
} else {
Log.E("Error to find ", "Email client")
}
}
}
Run Code Online (Sandbox Code Playgroud)
它在低于android 10 的版本上启动电子邮件客户端,但在android 11 中找不到电子邮件客户端。它总是显示查找电子邮件客户端时出错。有人可以更详细地向我解释一下Android 11 上的包可见性过滤是如何工作的吗?有人可以分享一些如何实现这一点的代码吗?
在 Android 11 中使用范围存储模型,我想让用户能够选择文件夹,从文档文件夹开始:
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, ??? )
startActivityForResult(intent, OPEN_DIRECTORY_REQUEST_CODE,null)
Run Code Online (Sandbox Code Playgroud)
问题是,如何生成手机文档文件夹的正确 URI?(它位于 root / 中)在官方文档中,没有给出示例。我真的希望所有标准位置都有一些简洁的常量?
我无法在 Android 11 上安装“VPN 和应用程序用户证书”的证书。我尝试通过“设置”菜单 >“从设备存储安装”>“VPN 和应用程序用户证书”进行设置,但我看到错误如:“此文件不能用作 VPN 和应用程序用户证书”。
但奇怪的是,两个月前它工作得很好,也许我做错了什么?
三星 A10 android 11 更新,Galaxy S9 和 Galaxy S10 在这些设备上进行了测试,但无法正常工作
此代码仅适用于 Android Oreo 及以上版本
这是我用于以编程方式在 android 中创建快捷方式的代码。在所有其他设备中,它工作得很好,但在这个特定设备上,它创建了简短的内容,但生成了我自己的应用程序快捷方式,但不符合要求。
val shortcutIntent = finalPackageName?.let {
context?.packageManager!!.getLaunchIntentForPackage(
it
)
}
val shortcutManager: ShortcutManager? = context?.getSystemService(ShortcutManager::class.java)
if (shortcutManager != null) {
if (shortcutManager.isRequestPinShortcutSupported) {
val shortcut = ShortcutInfo.Builder(context, "unique_id")
.setShortLabel(finalAppName)
.setLongLabel("Open the Android Docu")
.setIcon(Icon.createWithBitmap(finalBitmap))
.setIntent(shortcutIntent!!)
.build()
((activity) as MainActivity).registerReceiver(object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
findNavController().navigate(R.id.resultFragment)
context.unregisterReceiver(this)
}
}, IntentFilter("test_action"))
val intent = Intent("test_action")
val pendingIntent = PendingIntent.getBroadcast(context, 123, intent, …Run Code Online (Sandbox Code Playgroud) 我的目标是我的应用程序支持 30 (R)。我注意到调用此方法时缺少某些应用程序可供选择:
baseActivity.startActivity(Intent(MediaStore.ACTION_IMAGE_CAPTURE))
Run Code Online (Sandbox Code Playgroud)
当定位到 29 时,此代码显示了在拍照前要选择的几个应用程序:
定位到30后,直接打开相机APP(无选项)。
我查看了 android 11 的更改,但没有看到任何特别之处。我身边有什么需要改变的吗?
感谢阅读/帮助
我的自定义媒体样式通知不再适用于我的音乐应用的 Android 11。它在 Android 10 和以前的版本中运行良好。
是否需要添加任何其他代码才能在 Android 11 中运行。
我应该补充一点,摆脱“ .setMediaSession(mediaSessionCompat.getSessionToken())) ”行会给我一个通知,但它不是具有完整背景颜色的奥利奥通知等。
这是我创建通知的代码:
public static final String CHANNEL_ID = "Channel1";
//public static final String ACTION_PREVIOUS = "actionprevious";
public static final String ACTION_PLAY = "actionplay";
public static final String ACTION_EXIT = "actionexit";
//public static final String ACTION_NEXT = "actionnext";
public static Notification notification;
public static void createNotification(Context context, Track track, int playbutton, int exitApp, int pos, int size) {
if (Build.VERSION.SDK_INT >=Build.VERSION_CODES.O) {
NotificationManagerCompat notificationManagerCompat = NotificationManagerCompat.from(context);
MediaSessionCompat mediaSessionCompat = …Run Code Online (Sandbox Code Playgroud) 我正在尝试将我的应用程序更新到 Android 11。我的应用程序的许多屏幕都是在 StatusBar 后面使用应用程序内容设计的。我将我的 gradle 更新到了 Android 11 并开始更新 Window 代码,以获得同样适用于 Android 11 设备的无限制行为。我在 Activitiys onCreate 方法中使用以下代码为 Android 11 之前的设备实现了我想要的结果:
Window w = getWindow();
w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
Run Code Online (Sandbox Code Playgroud)
我试图通过使用为 Android 11 获得相同的无限制行为 w.setDecorFitsSystemWindows(false);
我尝试使用它而不是使用标志,将它与标志一起使用并传递 true 和 false,在设置标志之前和之后设置它,但我总是看到一个白色的状态和系统导航栏,而不是它们后面的我的应用程序内容。我试过的:
Window window = getWindow();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
window.setDecorFitsSystemWindows(false); //also tried with true
} else {
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
//or
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
window.setDecorFitsSystemWindows(false); //also tried with true
}
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
//or
window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
window.setDecorFitsSystemWindows(false); //also …Run Code Online (Sandbox Code Playgroud) Microphone对后台的访问已停止Android 11。只有 3 个选项,使用时允许、允许一次和拒绝。
如何让应用程序始终在后台访问麦克风Android 11?有什么解决方法吗?
开始一个意图:
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
CurrentFile = new File(getTempFileString());
CurrentUri = FileProvider.getUriForFile(context, context.getApplicationContext().getPackageName() + ".provider", CurrentFile);
intent.putExtra(MediaStore.EXTRA_OUTPUT, CurrentUri);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivityForResult(intent, IMAGE_CAPTURE);
Run Code Online (Sandbox Code Playgroud)
曾经工作。现在不行了。我在意图之后开始的方法是:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
}
Run Code Online (Sandbox Code Playgroud)
在resultCode以前是RESULT_OK,但现在RESULT_CANCELED。
如果我停止检查 resultCode 并跳过它,我会发现照片不存在。
根据 CommonsWare 的评论,我提取了日志。在此操作期间生成的 654 行中,有四行似乎相关。
2020-10-12 11:03:04.301 1471-1763/? E/MediaProvider: Creating a non-default top level directory or deleting an existing one is not allowed!
2020-10-12 11:03:04.310 477-2112/? I/AppsFilter: interaction: PackageSetting{240e1c6 com.[my app package]/10151} -> PackageSetting{193734c com.android.camera2/10124} …Run Code Online (Sandbox Code Playgroud) 我正在尝试从我的应用程序打开 Gmail(点击按钮)。我仅在 android 11 中遇到问题。它没有打开 Gmail 。在这种情况下,queryIntentActivities 返回空列表。
请帮助我如何解决 android 11 的这个问题。下面是我正在使用的代码..
val pkgManager = aContext.packageManager
val packages = pkgManager.queryIntentActivities(intent, 0)
if (!packages.isEmpty()) {
for (resolveInfo in packages) {
val packageName = resolveInfo.activityInfo.packageName
aEmailClientNames.add(resolveInfo.loadLabel(aContext.packageManager).toString())
aEmailClientIcons.add(resolveInfo.loadIcon(aContext.packageManager))
aEmailClientPackageNames.add(packageName)
}
Run Code Online (Sandbox Code Playgroud) android-11 ×10
android ×8
kotlin ×3
java ×2
android-notification.mediastyle ×1
certificate ×1
vpn ×1
windowinsets ×1