2012-05-31 76 views
1

我們可以知道用戶已經爲特定操作設置了默認應用程序嗎?一世。即android.intent.action.CALL_PRIVILEGED清除默認Android應用程序

假設我的應用程序還提供Call_privilaged操作調用。但用戶已將內置撥號程序設置爲Call_privilaged操作的默認啓動程序。

我的問題是,我可以從程序上知道該用戶已將撥號程序設置爲Call_privalged操作的默認啓動程序。

謝謝。

回答

1

我們可以知道用戶爲特定操作設置了默認應用程序嗎?一世。即android.intent.action.CALL_PRIVILEGED

我不認爲有一個簡單的方法來做到這一點。在PackageManager上撥打getPreferredActivities(),然後篩選List<IntentFilter>,您可以嘗試爲您的Intent找到匹配項。

0

您可以使用Intent或PackageManager的resolveActivity()

Intent intent = ... 
ComponentName componentName = intent.resolveActivity(getPackageManager()); 
if (componentName.getPackageName().equals("android")) { 
    // No default selected 
    ... 
} else if (componentName.getPackageName().equals(getPackageName())) { 
    // We are default 
    ... 
} else { 
    // Someone else is default 
    ... 
} 

如果你不處理自己的意圖,你也可以爲需要在沒有應用程序能夠處理這個意圖的情況下空檢查。

不確定這是否適用於所有設備和所有版本的Android。在Nexus設備上測試Android 4.1-4.3。