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