Android获取拨号程序包名称

时间:2018-01-12 12:01:31

标签: android android-dialer

我需要获取一个应用程序的包名称,该应用程序会发布有关未接来电的通知。据我所知,它使设备的拨号应用程序。我可以在设备上获取拨号器应用程序的包名称,我是否需要API 19?

2 个答案:

答案 0 :(得分:3)

您可以使用Intent.ACTION_DIAL操作和PackageManager.queryIntentActivities(...)过滤所有拨号程序。它将返回可以拨打电话的应用程序列表。阅读更多Android: How to show a list of dialer app installed on my device instead of directly calling default dialer

您可以使用以下代码,因为它是

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;
}

答案 1 :(得分:0)

要获取应用程序的程序包(和活动名称),可以使用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