[英]How to get the default application name for dialer app android
我需要检查我的拨号应用程序是否是默认拨号应用程序。 目前我正在使用此代码
private boolean isDefault() {
Intent i=new Intent(Intent.ACTION_DIAL);
i.addCategory(Intent.CATEGORY_DEFAULT);
ResolveInfo info=getPackageManager().resolveActivity(i,0);
CharSequence name=getPackageManager().getApplicationLabel(info.activityInfo.applicationInfo);
Log.d(TAG, "isDefault: "+name);
return name==getString(R.string.app_name);
}
但name
始终是“Android 系统”,您的帮助将不胜感激。 谢谢
我能够通过使用TelecomManager
解决我的问题,这是我的代码
private boolean isDefault() {
TelecomManager manger= (TelecomManager) getSystemService(TELECOM_SERVICE);
String name=manger.getDefaultDialerPackage();
Log.d(TAG, "isDefault: "+name);
return name.equals(getPackageName());
}
这是一种安全的方法,适用于所有 Android 版本:
fun isDefaultDialer(context: Context, packageNameToCheck: String = context.packageName): Boolean {
val dialingIntent = Intent(Intent.ACTION_DIAL).addCategory(Intent.CATEGORY_DEFAULT)
val resolveInfoList = packageManager.queryIntentActivities(dialingIntent, 0)
if (resolveInfoList.size != 1)
return false
return packageNameToCheck == resolveInfoList[0].activityInfo.packageName
}
示例用法:
Log.d("AppLog", "is current app the default dialer?${isDefaultDialer(this)}")
Log.d("AppLog", "is Google Dialer the the default dialer?${isDefaultDialer(this,"com.google.android.dialer")}")
Telecom Manager 的默认拨号程序包可从 API 级别 23 获得。
private fun getDefaultDialerApp() : String?{
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
val manager = applicationContext.getSystemService(Context.TELECOM_SERVICE) as TelecomManager
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
return manager.defaultDialerPackage;
}
}
return null //Change it based on your requirement.
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.