2012-09-28 1 views
1


내 응용 프로그램은 사용자가 원하는 메시지를 보내는 곳입니다. 받는 사람의 이름이 들어있는 Spinner가 있으며 하드 코드되어 있습니다. 나는 토스트 메시지가 "SMS가 성공적으로 전송되었습니다"라는 메시지를 만들었습니다. 그러나 토스트 메시지에 특정 수취인 이름을 포함시켜 메시지가 수취인에게 전송되었는지 확인해야한다는 것을 알고 있습니다.SMS를받을 때 수취인 이름 또는 Spinner ID를 포함하는 토스트 메시지

나는받는 사람의 이름을 포함 시키려고했지만 토스트 메시지를 시도했지만 응용 프로그램을 실행할 때 오류가 발생하고 토스트 메시지가 실패했습니다. SMS 앱의 전체 코드를 게시합니다.

public class SMSEvents extends Activity 
{ 
    Button btnSMS; 
    EditText messageTxt; 
    IntentFilter intentFilter; 
    TextView text, textName; 
    Spinner sendTo; 

    ArrayAdapter<String> adapter; 
    String friends[] = {"Kanak Priya", "Joanne Liew", "Melissa Haiting", "Michelle Lam", "Teo Kin Hua", "David Yeo", "Nur Ashiqin", "Stephanie"}; 

    private int namesSpinnderId; 

    private BroadcastReceiver intentReceiver = new BroadcastReceiver() 
     { 
      @Override 
      public void onReceive(Context context, Intent intent) 
      { 
       // ---display the SMS received in the TextView--- 
       TextView text = (TextView) findViewById(R.id.text); 
       text.setText(intent.getExtras().getString("sms"));       
      }      
    }; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.sms); 

     sendTo = (Spinner) findViewById(R.id.sendTo); 

     adapter = new ArrayAdapter<String>(this, 
       R.layout.spinner_text, friends); 
     sendTo.setAdapter(adapter); 





     /*BuddyDBAdapter buddyDB = new BuddyDBAdapter(this); 

     sendTo = (Spinner) findViewById(R.id.sendTo); 
     Cursor friendsCursor = buddyDB.getAllNames(); 
     startManagingCursor(friendsCursor);*/ 

     /*String[] from = new String[]{BuddyDBAdapter.KEY_NAME}; 
     int[] to = new int[]{R.id.sendTo}; 

     SimpleCursorAdapter friendsAdapter = new SimpleCursorAdapter(this, android.R.layout.simple_spinner_item, friendsCursor, from, to); 
     friendsAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     sendTo.setAdapter(friendsAdapter);*/ 

     /* sendTo.setOnItemSelectedListener(new OnItemSelectedListener() 
      { 

       @Override 
       public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) 
       { 
        Cursor c = (Cursor)parent.getItemAtPosition(pos); 
        namesSpinnderId = c.getInt(c.getColumnIndexOrThrow(BuddyDBAdapter.KEY_ROWID));     
       } 

       @Override 
       public void onNothingSelected(AdapterView<?> arg0) 
       { 
        // TODO Auto-generated method stub 

       } 

      });*/ 

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

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

     //sendTo = (EditText) findViewById(R.id.sendTo); 
     //textName = (TextView) findViewById(R.id.textName); 


     sendTo = (Spinner) findViewById(R.id.sendTo); 
     messageTxt = (EditText) findViewById(R.id.messageTxt); 

     btnSMS = (Button) findViewById(R.id.btnSMS); 
     btnSMS.setOnClickListener(new View.OnClickListener() 
      { 
       public void onClick(View v) 
       { 
        String contact_name = sendTo.getSelectedItem().toString(); 
        String message = messageTxt.getText().toString(); 

        if (contact_name.length() > 0 && message.length() > 0) 
         sendSMS(contact_name, message); 
        else 
         Toast.makeText(
           getBaseContext(), 
           "Please enter your message", 
           Toast.LENGTH_SHORT).show(); 

        /*Intent msgIntent = new Intent(android.content.Intent.ACTION_VIEW); 
        msgIntent.putExtra("sms_body", "default content"); 
        msgIntent.setType("vnd.android-dir/mms-sms"); 
        startActivity(msgIntent);*/ 
       } 

      }); 

     Button btnBack = (Button) findViewById(R.id.btnMain); 
     btnBack.setOnClickListener(new View.OnClickListener() 
      { 

       @Override 
       public void onClick(View arg0) 
       { 
        Intent menuIntent = new Intent(SMSEvents.this, MainPage.class); 
        startActivity(menuIntent); 

       } 
      }); 


    } 




    @Override 
    protected void onResume() 
    { 
     // ---register the receiver--- 
     // registerReceiver(intentReceiver, intentFilter); 
     super.onResume(); 
    } 

    @Override 
    protected void onPause() 
    { 
     // ---unregister the receiver--- 
     // unregisterReceiver(intentReceiver); 
     super.onPause(); 
    } 

    @Override 
    protected void onDestroy() 
    { 
     // ---unregister the receiver--- 
     unregisterReceiver(intentReceiver); 
     super.onPause(); 
    } 

    private void sendSMS(String contact_name, String message) 
    { 
     String SENT = "SMS SENT"; 
     String DELIVERED = "SMS_DELIVERED"; 

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

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

     // ---when the SMS has been sent--- 
     registerReceiver(new BroadcastReceiver() 
      { 
       @Override 
       public void onReceive(Context arg0, Intent arg1) 
       { 
        switch (getResultCode()) 
         { 
         case Activity.RESULT_OK: 
          Toast.makeText(getBaseContext(), "SMS is sent to" +contact_name successfully", 
            Toast.LENGTH_SHORT).show(); 
          break; 

         case SmsManager.RESULT_ERROR_GENERIC_FAILURE: 
          Toast.makeText(getBaseContext(), "Service 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; 

         } 
       } 
      }, new IntentFilter(SENT)); 

     // ---when the SMS has been delivered--- 
     registerReceiver(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; 
         } 
       } 
      }, new IntentFilter(DELIVERED)); 

     SmsManager sms = SmsManager.getDefault(); 
     sms.sendTextMessage("5554", null, message, sentPI, deliveredPI); 
     //sms.sendTextMessage(contact_name, null, message, sentPI, deliveredPI); 

     /*try 
     { 
      SmsManager smsManager = SmsManager.getDefault(); 
      smsManager.sendTextMessage(contact_name, null, message, null, null); 
      Toast.makeText(getApplicationContext(), "SMS is sent successfully!", Toast.LENGTH_LONG).show(); 
     } 
     catch(Exception e) 
     { 
      Toast.makeText(getApplicationContext(), "SMS failed! Please try again later!", Toast.LENGTH_LONG).show(); 
      e.printStackTrace(); 
     }*/ 
    } 
} 

Toast.makeText(getBaseContext(), "SMS is sent to" +contact_name successfully", Toast.LENGTH_SHORT).show(); 수신자 이름을 포함하려고합니다.

이 토스트를하는 방법을 아는 사람이라면 언제든지 감사하겠습니다.). 죄송합니다. 간단한 도움을 요청했지만이 토스트 메시지를 3 가지 방법으로 시도했습니다.

미리 감사드립니다. =)

답변

0

토스트하는 방법을 알아 냈습니다.

당신의 코드 같은 private void sendSMS()

내에 public void onReceive()이 토스트 메시지가 :

getSelectedItem()

Toast.makeText(getBaseContext(), "SMS is sent to " +sendTo.getSelectedItem()+ " successfully.", Toast.LENGTH_SHORT).show();는 회 전자에서 항목을 선택지고 있습니다. 광산에 비슷한 문제를 가지고 누구든지 사람들이 대답을 시도하고 그들의 유사한 문제를 해결 기대할 수, D : 당신이 글고 또는 텍스트 뷰를 사용하는 경우, 단지 getText()

getSelectedItem()를 교체합니다. : D

관련 문제