2010-07-27 2 views
6

Я хочу проверить, установлено ли мое приложение как приложение по умолчанию для целей, которые я обрабатываю внутри своего приложения.Как проверить, установлено ли мое приложение по умолчанию или нет в Android?

В качестве примера, которое может использоваться несколькими приложениями для открытия указанного формата файла. Мне нужно сделать мое приложение как приложение по умолчанию из моего кода. Как можно сделать мое приложение по умолчанию (из кода)? Может кто-нибудь мне помочь?

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

+0

Укажите, что вы подразумеваете под "по умолчанию". – CommonsWare

+1

Вы имеете в виду, что у вас установлено два разных приложения, управляющих одной и той же деятельностью? Встроенные «обмен сообщениями» и «Handcent SMS» для обработки коротких сообщений? Если пользователь установил приложение по умолчанию - вы хотите узнать, принадлежит ли его или нет? Правильно ли я понял ваш вопрос? –

+0

Я загружаю файл ics из своего приложения. Другое приложение также может загрузить файл ics. Когда пользователь попытается открыть файл, устройство Android отобразит возможное приложение для выполнения. Когда пользователь выбирает мое приложение для открытия файла ics в это время, я получу некоторые данные от пользователя (о пользователе). Если они выбирают мое приложение по умолчанию, я не буду спрашивать подробности о пользователе. Для этого мне нужно проверить, что мое приложение является стандартным приложением или нет. Если он по умолчанию, я сразу открою файл, иначе я хочу получить информацию о пользователе. – SRS

ответ

3

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

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

0

Вы можете использовать этот метод:

public static boolean isOurAppDefault(Context context) { 
    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://google.com")); 
    ResolveInfo resolveInfo = context.getPackageManager().resolveActivity(browserIntent,PackageManager.MATCH_DEFAULT_ONLY); 
    String defaultBrowserPkg = null; 
    if (resolveInfo != null) { 
     if (resolveInfo.activityInfo != null) { 
      defaultBrowserPkg = resolveInfo.activityInfo.packageName; 
     } 
    } 
    return TextUtils.equals(context.getPackageName(), defaultBrowserPkg); 
} 

Это ФАКТИЧЕСКОЕ для каких-нибудь редакторов или браузера. В другом случае используйте разные данные Uri для намерения.

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