Подтвердить что ты не робот

Начать работу с помощью пользовательского действия

Я хочу начать работу в своем приложении с помощью настраиваемого действия. Я нашел несколько ответов, но все, что я пробовал, бросает java.lang.RuntimeException сообщение "Нет активности" для обработки Intent {act = com.example.foo.bar.YOUR_ACTION}.

Это действие в моем файле манифеста:

<activity
    android:name=".FeedbackActivity" >  
    <intent-filter>
        <action android:name="com.example.foo.bar.YOUR_ACTION" />
    </intent-filter>
</activity>

И вот как я начинаю деятельность:

Intent intent = new Intent("com.example.foo.bar.YOUR_ACTION");
startActivity(intent);

Любая помощь будет принята с благодарностью.

4b9b3361

Ответ 1

Я думаю, что вы создаете свое намерение неправильно. Попробуйте вот так:

String CUSTOM_ACTION = "com.example.foo.bar.YOUR_ACTION";

//Intent i = new Intent(this, FeedBackActivity.class);  // <--- You might need to do it this way.
Intent i = new Intent();
i.setAction(CUSTOM_ACTION);

startActivity(i);

Ответ 2

Я думаю, что вам нужно добавить категорию по умолчанию в ваш фильтр намерений, например.

<activity
    android:name=".FeedbackActivity" >  
    <intent-filter>
        <action android:name="com.example.foo.bar.YOUR_ACTION" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

см. этот ответ для получения дополнительной информации.

Ответ 3

Просто добавьте категорию и фильтр-фильтр по умолчанию.

Неявное намерение работает отлично и во многих случаях лучше использовать неявное намерение с помощью Intent-action для вызова службы /Activity, чем использование имени класса.

До startActivty() / startService() с правильным контекстом вы можете использовать этот метод 'queryIntentActivities(Intent intent, int flags)' из класса диспетчера пакетов.

Он помогает ActivityManager (ответственному за запуск действий), чтобы проверить, соответствует ли система Android вашим намерениям.

Если это не так, он возвращает список размер 0 или еще > 0.

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

(пользователи никогда не простят вас, если произойдет сбой приложения для тура).

Надеюсь, это поможет!!! Счастливое кодирование.:)