0

我正在开发一个基于短信的应用程序。

我使用 android.provider.Telephony.SMS_RECEIVED 和 android:priority="999" 来处理收到的短信。

它工作正常。但如果用户使用 GoSMS,我的应用程序无法接收短信,因为它的优先级更高。

有没有办法在对话框中监视和显示具有相同或更高优先级的应用程序列表?

编辑: 现在,我使用以下代码:

PackageManager pmg = getPackageManager();
Intent intent = new Intent("android.provider.Telephony.SMS_RECEIVED");
List<ResolveInfo> activities = pmg.queryBroadcastReceivers(intent, 0);

for (ResolveInfo ri : activities) {
    Log.i(TAG, "app name: " + ri.loadLabel(pmg));
}

我可以获得所有使用“android.provider.Telephony.SMS_RECEIVED”的包。

1)但我需要获得设置或高于 999 的包

2) 这返回 Duplicate package nameg 因为在某些包中,不同的活动使用接收器。

4

1 回答 1

1

您可以使用queryIntentActivities传递 Intent 和标志来获取可以解析意图的活动列表。获得列表后,您可以使用priority fromResolveInfo来获取该活动的优先级。优先级范围在 -1000 到 1000 之间。因此 GoSMS 将其设置为最高的 999。

于 2013-10-22T03:22:12.750 回答