首页 > 解决方案 > 即使 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吗?

标签: android

解决方案


如果 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);

推荐阅读