2012-05-30 9 views
3

После того, как приложение «X» на главном экране установлено на устройстве &, когда пользователь нажимает кнопку «Главная», ему предлагается диалоговое окно Android по умолчанию «Действие» для выбора между стандартным домашним & моим X-приложением.Как определить, установлено ли мое приложение по умолчанию пользователем?

Мой вариант использования заключается в том, чтобы продолжать запрашивать пользователя - немного редко, с этим диалоговым окном по умолчанию, пока он не выберет мое приложение по умолчанию.

  1. я могу сделать подсказку с ACTION_MAIN намерением.
  2. Проблема в том, когда следует прекратить запрос?
    Как я узнаю, что мое приложение X по умолчанию сейчас?

ответ

6

Допустим, у вас есть приложение X, со следующим заявлением в своем манифесте

<activity android:name=".MyActivity" 
     android:label="@string/app_name"> 
    <!-- filter: This activity can be the default view action for a row in 
     RawContacts --> 
    <intent-filter> 
     <action android:name="android.intent.action.VIEW" /> 
     <data android:mimeType="vnd.android.cursor.item/raw_contact" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 

Чтобы проверить, действительно ли это приложение является «вариант по умолчанию» (в этом examepl для чего) вы просто:

/** 
* Returns true if the supplied component name is the preferred activity 
* for any action. 
* @param component The ComponentName of your Activity, e.g. 
* Activity#getComponentName(). 
*/ 
boolean isDefault(ComponentName component) { 
    ArrayList<ComponentName> components = new ArrayList<ComponentName>(); 
    ArrayList<IntentFilter> filters = new ArrayList<IntentFilter>(); 
    getPackageManager().getPreferredActivities(filters, components, null); 
    return components.contains(component); 
}  
+0

Awesome. Именно то, что я хотел. Я не мог выдвинуть ответ, хотя .. – rbot

+1

Отлично! Только то, что я искал. Я просто хотел бы добавить, что вы вызываете это как внутри Activity: isDefault (this.getComponentName()); – Ivo

+0

, и если мое приложение не является стандартным, то как я могу сделать его по умолчанию –

Смежные вопросы