Android получает имя пакета номеронабирателя

Мне нужно получить имя пакета приложения, которое публикует уведомление о пропущенном звонке. Насколько я понимаю, это делает номеронабиратель устройства. Могу ли я получить имя пакета приложения для набора номера на устройстве, мне это нужно из API 19?


person Ruslan Leshchenko    schedule 12.01.2018    source источник


Ответы (2)


Вы можете отфильтровать все приложения для набора номера, используя действие Intent.ACTION_DIAL и PackageManager.queryIntentActivities(...). Где он вернет список приложений, которые могут дозвониться до телефона. Подробнее читайте на Android: как отобразить список приложений для набора номера, установленных на моем устройстве, вместо того, чтобы напрямую вызывать номеронабиратель по умолчанию


Вы можете использовать код ниже, как есть

public List<String> getPackagesOfDialerApps(Context context){

    List<String> packageNames = new ArrayList<>();

    // Declare action which target application listen to initiate phone call
    final Intent intent = new Intent();
    intent.setAction(Intent.ACTION_DIAL);
    // Query for all those applications
    List<ResolveInfo> resolveInfos = context.getPackageManager().queryIntentActivities(intent, 0);
    // Read package name of all those applications
    for(ResolveInfo resolveInfo : resolveInfos){
        ActivityInfo activityInfo = resolveInfo.activityInfo;
        packageNames.add(activityInfo.applicationInfo.packageName);
    }

    return packageNames;
}
person Pankaj Kumar    schedule 12.01.2018
comment
как получить приложение для набора номера по умолчанию - person Lasitha Lakmal; 01.10.2019

Чтобы получить пакет приложения (и имя действия), вы можете использовать команду adb.

Запустите приложение, а затем:

adb shell dumpsys window windows | grep -E 'mCurrentFocus|mFocusedApp'

Из вывода:

mFocusedApp=AppWindowToken{
  e224f9d token=Token{
    d8b2e74 ActivityRecord{
      1d97647 u0 com.android.dialer/.app.DialtactsActivity t1078
    }
  }
}

Вы можете сказать, что пакет приложения – com.android.dialer, а название – .app.DialtactsActivity.

person Roman Roshchin    schedule 28.05.2020