簡體   English   中英

如何獲取撥號應用程序android的默認應用程序名稱

[英]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.

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