Как я могу начать следующее сопоставление, если мое приложение по умолчанию - PullRequest
2 голосов
/ 29 сентября 2011

У меня есть активность, которая работает как ловушка для разных целей.В частности, VOICE_COMMAND и CALL_PRIVILEGED.(Требуется использовать их.)

<activity android:name=".MyActivity"
    android:enabled="true">
    <intent-filter>
        <action android:name="android.intent.action.VOICE_COMMAND" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.CALL_PRIVILEGED" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:scheme="tel" />
    </intent-filter>
</activity>

Я прошу пользователя установить мое приложение в качестве действия по умолчанию для этих намерений, чтобы ему не приходилось выбирать его каждый раз.Это также требование.

Проблема в том, что в некоторых случаях я хочу, чтобы моя деятельность работала прозрачно, и передавал намерение в номеронабиратель или другое приложение.Это должно быть выбрано пользователем.Я достиг этого, используя getPackageManager().setComponentEnabledSetting(myCompName, isEnabled, PackageManager.DONT_KILL_APP) в своей деятельности в определенных местах кода.

Есть ли более элегантный способ сделать это?Я попытался startNextMatchingActivity(getIntent()), но это ничего не запускает (возвращает false).Означает ли это, что если есть действие по умолчанию, то все остальное игнорируется из намеренного разрешения?

1 Ответ

0 голосов
/ 23 ноября 2011

В настоящее время (на Android 2.3), похоже, нет другого способа переадресации намерения, кроме как сделать это вручную.Кроме того, для отправки намерения CALL_PRIVILEGED приложение должно иметь специальные разрешения, которые есть только у системных приложений .(В противном случае приложение получит недопустимые исключения.)

В общем, намерение должно быть преобразовано в какое-то другое намерение, которое мое приложение может отправить и запустить следующее действие вручную, путем получения списка применимых действий из PackageManager.queryIntentActivities () API.

...