0

私はSMSベースのアプリケーションに取り組んでいます。

android.provider.Telephony.SMS_RECEIVED と android:priority="999" を使用して、受信した SMS を処理します。

それは正常に動作します。ただし、ユーザーが GoSMS を使用すると、優先度が高いため、アプリは SMS を受信できません。

ダイアログボックスで優先度が同等またはより高いアプリのリストを監視して表示する方法はありますか?

編集: 今、私はこのコードを使用します:

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) 一部のパッケージでは、さまざまなアクティビティがレシーバーを使用するため、これは重複したパッケージ名を返します。

4

1 に答える 1

1

インテントとフラグを渡すqueryIntentActivitiesを使用して、インテントを解決できるアクティビティのリストを取得できます。リストを取得したら、 priority fromResolveInfoを使用してそのアクティビティの優先度を取得できます。優先度の範囲は -1000 から 1000 です。そのため、GoSMS はそれを最高の 999 に設定しました。

于 2013-10-22T03:22:12.750 に答える