Я искал и искал и не могу найти ответ на этот конкретный вопрос о пользовательских намерениях.
У меня есть приложение с четырьмя действиями, 1 - основное, которое настраивает вещи, а остальные 3 представляют различные экраны, которые я представляю пользователю. Я пытаюсь использовать собственные намерения, чтобы начать различные действия.
Вот мой AndroidManifext.xml:
<?xml version="1.0" encoding="utf-8"?>
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".Activities.REDB_main" android:label="@string/app_name"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Activities.ChooseCards" android:launchMode="singleTop">
<intent-filter>
<action android:name="@string/ACTION_VIEW" />
<action android:name="@string/ACTION_REFRESH" />
<category android:name="@string/CATEGORY_SHUFFLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".Activities.SelectSets" android:launchMode="singleTop">
<intent-filter>
<action android:name="@string/ACTION_VIEW" />
<action android:name="@string/ACTION_REFRESH" />
<category android:name="@string/CATEGORY_SELECT_SETS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity android:name=".Activities.SelectCards" android:launchMode="singleTop"
android:permission="android.permission.ACCESS_CHECKIN_PROPERTIES">
<intent-filter>
<action android:name="@string/ACTION_VIEW" />
<action android:name="@string/ACTION_REFRESH" />
<category android:name="@string/CATEGORY_SELECT_CARDS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
Я создаю категорию для каждого приложения, а затем два вида действий, которые я хочу выполнить. Я знаю, что могу использовать явные намерения, но, поскольку я хочу совершать разные действия, я решил, что создание неявных намерений будет работать лучше.
Я называю первое из моих реальных действий изнутри моей главной с этим:
Intent intent = new Intent().setAction(getString(R.string.ACTION_VIEW));
intent.addCategory(getString(R.string.CATEGORY_SHUFFLE));
startActivity(intent);
Конечно, причина, по которой я здесь, заключается в том, что вышеописанное никогда не может найти действие, соответствующее цели. В сообщениях об ошибках правильно указаны действие и категория, и, если я не ошибаюсь, вышеуказанный манифест правильно создает фильтры намерений.
При поиске в Интернете я всегда нахожу примеры с данными, которые также используются. Я возился с добавлением данных, чтобы посмотреть, было ли это необходимо, но, похоже, это не имело значения.
На немного другой ноте, есть ли другой способ управления потоком моей программы, кроме намерений? Причина, по которой у меня есть два действия, заключается в том, что одно переключает представление, а другое просто обновляет данные, поэтому, когда пользователь переключается на экран позже, он не видит, что он быстро обновляет данные, а вместо этого - просто новый материал.