Android получить имя пакета номеронабирателя
Мне нужно получить название пакета приложения, которое публикует уведомление о пропущенном звонке. Насколько я понимаю, это делает приложение номеронабирателя устройства. Могу ли я получить имя пакета приложения для набора номера на устройстве, оно мне нужно из API 19?
1 ответ
Вы можете отфильтровать все приложения для набора номера, используя 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;
}
Чтобы получить пакет приложения (и название действия), вы можете использовать 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