Как определить намерение ACTION_VIEW по умолчанию для определенного MIME? - PullRequest
1 голос
/ 25 ноября 2011

Я пытаюсь найти значение по умолчанию Intent, какое устройство используется для поддержки определенного типа MIME, код вроде:

    PackageManager pm = this.getPackageManager();
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setDataAndType(uri, mimeType);
    List<ResolveInfo> lri = pm.queryIntentActivities(intent, 0);
    for(ResolveInfo resolveInfo:lri)
    {
        if(Me.DEBUG)
            Log.i(TAG, "Resolved intent="+resolveInfo.activityInfo.packageName+
                    ", default="+resolveInfo.isDefault+
                    ", order="+resolveInfo.preferredOrder+
                    ", match="+resolveInfo.match+
                    ", priority="+resolveInfo.priority);
        if(resolveInfo.isDefault)
        {
            intent=pm.getLaunchIntentForPackage(resolveInfo.resolvePackageName);
            intent.setDataAndType(uri, mimeTypes.getMimeTypeString(name));
            break;
        }
    }
    return intent; 

Что не так с этим кодом? ResolveInfo никогда не возвращает значение по умолчанию ... Отчеты Logcat всегда одинаковы, например:

Разрешенное намерение = com.android.htmlviewer, по умолчанию = false, order = 0, соответствует = 6324224, приоритет = 0 Решено намерение = com.sec.print.mobileprint, по умолчанию = ложь, порядок = 0, совпадение = 6324224, приоритет = 0 Решено intent = com.qo.android.htc, default = false, order = 0, match = 6324224, priority = 0 Resolved intent = org.coolreader, default = false, order = 0, соответствие = 6324224, приоритет = 0 Разрешенное намерение = xcxin.filexpert, по умолчанию = ложь, порядок = 0, совпадение = 6324224, приоритет = 0 Решено intent = com.opera.browser, default = false, order = 0, match = 6324224, priority = 0 Resolved intent = com.dropbox.android, default = false, order = 0, match = 6324224, приоритет = 0

Несмотря на то, что пользователь по умолчанию помечает флажок «сделать это по умолчанию» в списке выбора!

1 Ответ

0 голосов
/ 25 ноября 2011

Здесь «по умолчанию» означает, что пользователь установил значение по умолчанию, предварительно вызвав этот Intent и установив флажок «сделать это по умолчанию» в блоке выбора.Если это еще не сделано, по умолчанию нет.

...