android - 即使 URI 是应用程序链接,如何显示选择器对话框
问题描述
关于的参考说android.content.Intent.ACTION_CHOOSER
:
…即使其中一项当前被标记为首选活动,也将始终显示所有可能的活动。
没有对话;您的应用打开以处理您的网站链接
我认为这些是自相矛盾的。
例如,以下 App Links URI 选择器是否显示对话框?在我的测试中,没有显示任何对话框。
package com.example.applinkchooser;
import android.app.ListActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Uri uri = Uri.parse(<an app links uri>);
Intent uriIntent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(Intent.createChooser(uriIntent, null));
finish();
}
}
然后我的问题是即使 URI 是应用程序链接,如何显示选择器对话框。我必须使用android.content.pm.PackageManager
吗?
解决方案
如果 SDK 是 M 或更高版本,则必须在标志中添加 MATCH_ALL。
int appsFlag = PackageManager.MATCH_DEFAULT_ONLY;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
appsFlag = PackageManager.MATCH_ALL;
}
PackageManager pm = getPackageManager();
Intent urlIntent = new Intent(Intent.ACTION_VIEW, uri);
List<ResolveInfo> resolveInfos = pm.queryIntentActivities(urlIntent, appsFlag);
推荐阅读
- iis - IIS 8 Url重写规则否定不起作用
- mysql - 如何编写返回具有最多事务计数的项目名称的查询?
- docker - Dockerfile CMD 没有通过引号传递给 /bin/sh -c 入口点
- python - 从带有分类的熊猫非均匀列中提取多个数字
- dsl - 用于复杂 JSON 对象的 karate.filterKeys() API
- c - 降级后 GCC 无法编译简单的 C 应用程序
- html - 使用R markdown,有没有办法修复可滚动(html)、kable 表的行名,类似于scroll_box 函数修复标题行?
- asp.net-core - 在不使应用程序崩溃的情况下,循环调用命名 httpclients 的最佳方法是什么?
- iis - 使用井号/数字符号“#”重写 IIS URL
- c - 在 C 中定义全局常量