簡體   English   中英

安卓獲取撥號包名

[英]Android get dialer package name

我需要獲取發布未接來電通知的應用程序的包名稱。 據我了解,它使設備的撥號器應用程序成為可能。 我可以在設備上獲取撥號器應用程序的包名嗎?我需要從 API 19 獲取它嗎?

您可以使用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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM