2015-04-17 5 views
5

Ich versuche, eine SMS-Anwendung in Android zu bauen, funktioniert der Code, aber das einzige daran falsch ist, dass ich keine Nachrichten an den Emulator mit DDMS senden kann. Ich habe meinen Code unten eingefügt, falls es notwendig ist, und ich habe den Screenshot unmittelbar nachWie eine Nachricht an den Emulator senden mit DDMS in Android Studio

package com.example.oghenekaroedoh.sms; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.telephony.SmsMessage; 
import android.util.Log; 
import android.widget.Toast; 

/** 
* Created by OGHENEKARO EDOH on 15/04/2015. 
*/ 
public class SMSReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     //---get the SMS message passed in--- 
     Bundle bundle = intent.getExtras(); 
     SmsMessage[] msgs = null; 
     String str = "SMS from "; 
     if (bundle != null) 
     { 
      //---retrieve the SMS message received--- 
      Object[] pdus = (Object[]) bundle.get("pdus"); 
      msgs = new SmsMessage[pdus.length]; 
      for (int i=0; i<msgs.length; i++){ 
       msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]); 
       if (i==0) { 
        //---get the sender address/phone number--- 
        str += msgs[i].getOriginatingAddress(); 
        str += ": "; 
       } 
       //---get the message body--- 
       str += msgs[i].getMessageBody().toString(); 
      } 
      //---display the new SMS message--- 
      Toast.makeText(context, str, Toast.LENGTH_SHORT).show(); 
      Log.d("SMSReceiver", str); 
     } 
    } 
} 

Hier ist der Code für die Aktivität ist, fügen Sie diesen Code in einer anderen Datei ..

package com.example.oghenekaroedoh.sms; 

import android.app.Activity; 
import android.app.PendingIntent; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.os.Bundle; 
import android.telephony.SmsManager; 
import android.view.View; 
import android.widget.TextView; 
import android.widget.Toast; 

/** 
* Created by ALEX IRABOR on 16/04/2015. 
* NOTES.. 
* This code illustrates how to create send and receive sms, but unlike the others, the messages are displayed in a view 
* for more information on this code check out page 334-338 beginning android 4 application development 
*/ 
public class SMSActivity3 extends Activity { 
    String SENT = "SMS_SENT"; 
    String DELIVERED = "SMS_DELIVERED"; 
    PendingIntent sentPI, deliveredPI; 
    BroadcastReceiver smsSentReceiver, smsDeliveredReceiver; 
    IntentFilter intentFilter; 

     private BroadcastReceiver intentReceiver = new BroadcastReceiver() { 

      public void onReceive(Context context, Intent intent) { 
       //---display the SMS received in the TextView--- 
       TextView SMSes = (TextView) findViewById(R.id.textView1); 
       SMSes.setText(intent.getExtras().getString("sms")); 
      } 
     }; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_sms); 

     sentPI = PendingIntent.getBroadcast(this, 0, 
       new Intent(SENT), 0); 

     deliveredPI = PendingIntent.getBroadcast(this, 0, 
       new Intent(DELIVERED), 0); 

     //---intent to filter for SMS messages received--- 
     intentFilter = new IntentFilter(); 
     intentFilter.addAction("SMS_RECEIVED_ACTION"); 
    } 

    @Override 
    public void onResume(){ 
     super.onResume(); 

     //---register the receiver--- 
     registerReceiver(intentReceiver, intentFilter); 

     /*A broadcastReceiver receives broadcast from any of the pendingIntents created. So when 
     sentPI sends a broadcast, it knows that the message has been sent, and when the 
     deliveredPI sends a broadcast, it knows that the message has been delivered.. 
     * */ 

     //---create the BroadcastReceiver when the SMS is sent--- 
     smsSentReceiver = new BroadcastReceiver(){ 
      @Override 
      public void onReceive(Context arg0, Intent arg1) { 
       switch (getResultCode()) 
       { 
        case Activity.RESULT_OK: 
         Toast.makeText(getBaseContext(), "SMS sent", 
           Toast.LENGTH_SHORT).show(); 
         break; 
        case SmsManager.RESULT_ERROR_GENERIC_FAILURE: 
         Toast.makeText(getBaseContext(), "Generic failure", 
           Toast.LENGTH_SHORT).show(); 
         break; 
        case SmsManager.RESULT_ERROR_NO_SERVICE: 
         Toast.makeText(getBaseContext(), "No service", 
           Toast.LENGTH_SHORT).show(); 
         break; 
        case SmsManager.RESULT_ERROR_NULL_PDU: 
         Toast.makeText(getBaseContext(), "Null PDU", 
           Toast.LENGTH_SHORT).show(); 
         break; 
        case SmsManager.RESULT_ERROR_RADIO_OFF: 
         Toast.makeText(getBaseContext(), "Radio off", 
           Toast.LENGTH_SHORT).show(); 
         break; 
       } 
      } 
     }; 
     smsDeliveredReceiver = new BroadcastReceiver(){ 
      @Override 
      public void onReceive(Context arg0, Intent arg1) { 
       switch (getResultCode()) 
       { 
        case Activity.RESULT_OK: 
         Toast.makeText(getBaseContext(), "SMS delivered", 
           Toast.LENGTH_SHORT).show(); 
         break; 
        case Activity.RESULT_CANCELED: 
         Toast.makeText(getBaseContext(), "SMS not delivered", 
           Toast.LENGTH_SHORT).show(); 
         break; 
       } 
      } 
     }; 
     //---register the two BroadcastReceivers--- 
     registerReceiver(smsDeliveredReceiver, new IntentFilter(DELIVERED)); 
     registerReceiver(smsSentReceiver, new IntentFilter(SENT)); 
    } 

    public void onPause(){ 
     super.onPause(); 
     //---unregister the receiver--- 
     unregisterReceiver(intentReceiver); 

     //---unregister the two BroadcastReceivers--- 
     unregisterReceiver(smsSentReceiver); 
     unregisterReceiver(smsDeliveredReceiver); 
    } 

    public void onClick(View v) { 
     sendSMS("5556", "Hello my friends!"); 
    } 

    public void onClick2 (View v) { 
     Intent i = new 
       Intent(android.content.Intent.ACTION_VIEW); 
     i.putExtra("address", "5556; 5558; 5560"); 
     i.putExtra("sms_body", "Hello my friends!"); 
     i.setType("vnd.android-dir/mms-sms"); 
     startActivity(i); 
    } 

    //—-sends an SMS message to another device—- 
    private void sendSMS(String phoneNumber, String message) 
    { 
     SmsManager sms = SmsManager.getDefault(); 
     sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI); 
    } 


} 

So sieht die DDMS-Ausgabe aus: enter image description here Das Hauptproblem hierbei ist, dass die Optionsschaltflächen für die Telefonieaktionen nicht klickbar sind. Jemand bitte helfen Sie mir beheben

Antwort

0

Sie haben das Gerät in der Ansicht Geräte ausgewählt ist. ohne Gerät oder Emulator Sie können die Emulatorsteuerung nicht verwenden.

Wenn nicht helfen, in der Nähe Eclipse und DDMS läuft außerhalb von Eclipse

Gehen Sie zum DDMs Skript in tool Shell, wo immer Sie das Android SDK installiert.

Wenn es nicht funktioniert dann Hilfe, führen Sie Adb Kill-Server, gefolgt von Adb Start-Server, wo Adb sollte in Ihrem Plattform-Tools/Verzeichnis Ihrer SDK-Installation sein. Dann versuchen Sie DDMS erneut.

Wenn das nicht hilft, starten Sie neu, und versuchen Sie DDMS erneut.

6

Sie können auch über Terminal senden. seine beantwortet von @Andi Krusch Sending and receiving text using android emulator

stellen Sie sicher Emulator adb devices

  1. Öffnen Sie eine Konsole (Terminal)
  2. Verbindung über Telnet auf den laufenden Emulator ist online: telnet localhost 5554 (Sie können die Port-Nummer finden im Titel des Emulators)
  3. Typ dieser: sms send senderPhoneNumber textmessage

AKTUALISIERT: Ein weiteres Tutorial: mobiforge : SMS Messaging in Android

15

Es besteht keine Notwendigkeit DDMS SMS zur Emulator zu senden. Sie haben die folgenden Tasten treffen: -

Ctrl + Shift + P 

Für andere Optionen click here

+0

Groß . Dies sollte als Antwort markiert werden. –

4

Sie können perfekt für mich mit Emulator erweiterte Kontrollen, senden arbeiten, ich war nicht in der Lage DDMS senden mit You can send using emultor Extended Controls

Verwandte Themen