Как определить, установлено ли мое приложение по умолчанию пользователем?

Однажды мое приложение для домашнего экрана "X". установлено на устройстве & amp; когда пользователь нажимает кнопку «Домой», ему предлагаетсяDefault Action Android-диалог для выбора между Домом по умолчанию и Усилителем; мое приложение X

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

I can do the prompting with a ACTION_MAIN intent. Issue is when should i stop the prompting ?
How would i know that my X app is the default now ?

Ответы на вопрос(1)

Решение Вопроса

у вас есть приложение 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);
}    
 rbot05 июн. 2012 г., 07:51
Потрясающе. Именно то, что я хотел. Я не смог бы ответить, хотя ..
 Asim Habib20 июн. 2014 г., 08:34
и если мое приложение не по умолчанию, то как я могу сделать его по умолчанию
 Ivo27 сент. 2012 г., 23:38
Отлично! Как раз то, что я искал. Я просто хотел бы добавить, что вы называете это так в Activity: isDefault (this.getComponentName ());

Ваш ответ на вопрос