Вопрос по android – BroadcastReceiver с интент-фильтром для них?

1

Она - это то, чего я пытаюсь достичь:

When user tries to share some text from any app (Like sharing a tweet or a link), my app will appear in the sharing list. If he select my app, some simple code will be run (like showing a Toast) then that's it. No interface or UI is needed.

Вот как я это сделал:

AndroidManifest.xml

<code><receiver 
android:name=".MyBroadcastReceiver" >
    <intent-filter
        android:label="select my app">
        <action android:name="android.intent.action.SEND" />
        <category android:name="android.intent.category.DEFAULT" />
        <data android:mimeType="text/plain" />
    </intent-filter>                
</receiver>
</code>

MyBroadcastReceiver.java

<code>public void onReceive(Context arg0, Intent arg1) {
    // TODO Auto-generated method stub
    //Some simple code
    Toast.makeText(arg0, "My Receiver is cool", Toast.LENGTH_LONG).show();
}
</code>

Это не сработало, мое приложение не отображается в списке общего доступа.

Why I work with BroadcatReceivers and not with Activities? Потому что я не хочу никакого пользовательского интерфейса, и я думаю, что именно поэтому у нас есть приемники (исправьте мой плз)

Я делаю это правильно?

Ваш Ответ

1   ответ
8

ACTION_SEND используется с деятельностью. Вы пытаетесь использоватьBroadcastReceiver, Так какBroadcastReceiver это не деятельность, это не будет работать.

Am I doing it right?

Нет.

If he select my app, some simple code will be run (like showing a Toast) then that's it. No interface or UI is needed.

Вам все еще нужна активность. Однако, если вы даете активностьTheme.NoDisplay, а ты не звониsetContentView(), не будет пользовательского интерфейса для деятельности. Обычно вы просто звонитеfinish() отonCreate() после выполнения всего, что вы хотели сделать (в этом случае отобразитеToast).

Например,этот пример приложения показывает активность (FauxSender) настроить делать именно то, что вы хотите: ответить наACTION_SEND сToast, У него есть другой вид деятельности, который выдаетACTION_SEND так что вы можете увидеть результаты.

Error: User Rate Limit Exceeded iTurki

Похожие вопросы