2014-03-25 7 views
23

Ich habe BroadcastReceiver Klasse:Senden Absicht BroadcastReceiver von adb

public class IntentReceiver extends BroadcastReceiver { 

    final String tag = "Intent Intercepter"; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     try { 
      String data = intent.getStringExtra("sms_body"); 
      Log.i(tag, data); 
      Toast.makeText(context, data.subSequence(0, data.length()), Toast.LENGTH_LONG).show(); 
     } catch (Exception e) { 
      Toast.makeText(context, "Intercepted", Toast.LENGTH_LONG).show(); 
     } 
    } 
} 

Und auch in manifest:

<receiver android:name="com.whereismywifeserver.IntentReceiver" android:enabled="true"> 
    <intent-filter android:priority="999"> 
     <action android:name="com.whereismywifeserver.intent.TEST"/> 
    </intent-filter> 
</receiver> 

Aber wenn ich versuche Absicht von adb zu schicken, ich Fehlermeldung an:

C:\Users\i.yesilevsky>adb shell am start -a com.whereismywifeserver.intent.TEST 
--es sms_body "test from adb" -c android.intent.category.HOME -n com.whereismywifeserver/.IntentReceiver 
Starting: Intent { act=com.whereismywifeserver.intent.TEST t=[android.intent.category.HOME] cmp=com.whereismywifeserver/.IntentReceiver (has extras) } 
Error type 3 
Error: Activity class {com.whereismywifeserver/com.whereismywifeser 
ver.IntentReceiver} does not exist. 

Wenn ich Intent in Code erstellen, funktioniert alles einwandfrei. Also, wie kann ich Absicht von adb senden?

+0

möglich Duplikat [Nachricht Intent to App in Emulator] (http://stackoverflow.com/questions/10277796/send-intent-to-app-in-emulator) – janot

+73

haben Sie schließlich finden ihr? – Jmorvan

Antwort

18

ich gefunden habe, dass der Befehl falsch war, enthält korrekter Befehl „broadcast“ anstelle von „Start“:

adb shell am broadcast -a com.whereismywifeserver.intent.TEST --es sms_body "test from adb" -n com.whereismywifeserver/.IntentReceiver 
58

Keine Notwendigkeit Empfänger angeben. Versuchen Sie folgendes:

adb shell am broadcast -a com.whereismywifeserver.intent.TEST --es sms_body "test from adb" 
+0

Aus irgendeinem Grund kann Broadcast den Empfänger nicht erreichen, wenn String extra ('test from adb' im obigen Beispiel) whitespaces enthält. Sonst funktioniert es. – user2137020