2012-05-31 3 views
1

Можем ли мы узнать, что пользователь установил приложение по умолчанию для конкретного действия? я. е. android.intent.action.CALL_PRIVILEGEDClear Default Android Application

Предположим, что мое приложение также предоставляет вызванное действие Call_privilaged. но пользователь установил встроенный дозвон в качестве пусковой установки по умолчанию для Call_privilaged действия.

Мой вопрос: могу ли я програмически узнать, что пользователь установил дозвон по умолчанию для запуска Call_privalged.

Thank you.

ответ

1

Можем ли мы узнать, что пользователь установил приложение по умолчанию для конкретного действия? я. е. android.intent.action.CALL_PRIVILEGED

Я не думаю, что есть простой способ сделать это. Вызов getPreferredActivities() на PackageManager и просеивание через List<IntentFilter> вы вернетесь, когда попробуете найти совпадение для своего Intent.

0

Вы можете использовать resolveActivity() Intent или PackageManager.

Intent intent = ... 
ComponentName componentName = intent.resolveActivity(getPackageManager()); 
if (componentName.getPackageName().equals("android")) { 
    // No default selected 
    ... 
} else if (componentName.getPackageName().equals(getPackageName())) { 
    // We are default 
    ... 
} else { 
    // Someone else is default 
    ... 
} 

Если вы не обрабатываете намерение самостоятельно вы можете также необходимо проверить нуль для случая, когда нет приложения в состоянии справиться с намерением.

Не уверен, что это работает на всех устройствах и во всех версиях Android. Протестировано на Android 4.1-4.3 на устройствах Nexus.