#android
#Android
Вопрос:
В ссылке about android.content.Intent.ACTION_CHOOSER
говорится:
… все возможные действия всегда будут отображаться, даже если одно из них в настоящее время помечено как предпочтительное действие.
В о ссылках на приложения говорится:
Нет диалога; ваше приложение открывается для обработки ссылок на ваш сайт
Я думаю, что это антиномия.
Например, показывает ли следующий параметр выбора для 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
?
Ответ №1:
Если 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);
Комментарии:
1. Приложения, у которых нет ссылок на приложения, не отображаются, даже если это решение.