2016-01-20 2 views
-1

Я пытаюсь отправить свое местоположение своему другу с использованием класса Intent. Все работает нормально, но когда я попытался отправить sms.sendTextMessage, он выдает исключение RunTime.Ошибка RunTime с использованием службы sms

>java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, 
request=1, result=-1, data=Intent { 
    dat=content://com.android.contacts/contacts/lookup/2513i64a4c0af8e7588fa.1412i34 
/34 flg=0x1 }} to activity 
{com.login.thinkpad.login/com.login.thinkpad.login.SecondActivity}: 
java.lang.NullPointerException: Attempt to get length of null array 

Не могли бы вы помочь мне отправить свое местоположение через sms-сервис? Спасибо заранее. Это мой код.

public class SecondActivity extends AppCompatActivity { 
    TextView youLoginIn; 
    Button Map; 
    private static Intent chooser; 
    private final int PICK_CONTACT = 1; 
    @Override 
    protected void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.second_activity); 
     youLoginIn = (TextView)findViewById(R.id.youLogined); 
     Intent intent = getIntent(); 
     intent.getStringExtra("SpeicalKey"); 
     Map = (Button)findViewById(R.id.Map); 
    } 

    public void mClicked(View view){ 

     Intent intent = new Intent(Intent.ACTION_VIEW); 
     intent.setData(Uri.parse("google.navigation:q=a+street+address")); 
     chooser=Intent.createChooser(intent,"Launch Maps"); 

     //  if (intent.resolveActivity(getPackageManager()) != null) { 
     //   startActivity(chooser); 
     //  } 

    } 


    public void callContacts(View v) { 

     Intent intent = new Intent(Intent.ACTION_PICK,  
    ContactsContract.Contacts.CONTENT_URI); 
     startActivityForResult(intent, PICK_CONTACT); 
    } 

    @Override 
    protected void onActivityResult(int reqCode, int resultCode, Intent data) { 
     // TODO Auto-generated method stub 
     super.onActivityResult(reqCode, resultCode, data); 

     if(reqCode == PICK_CONTACT) { 
      if(resultCode == ActionBarActivity.RESULT_OK) { 
       Uri contactData = data.getData(); 
       Cursor c = getContentResolver().query(contactData, null, null, null, null); 

       if(c.moveToFirst()) { 
        String name = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME)); 
        Toast.makeText(this, "You've picked:" + name, Toast.LENGTH_LONG).show(); 

        //send your location to that name choosen. 
        SmsManager sms = SmsManager.getDefault(); 
        sms.sendTextMessage(name,null, String.valueOf(chooser),null,null); // Exception occur here. 
       } 
      } 
     } 
    } 

} 

ответ

0

sendTextMessage принимает адрес назначения, вы указали название!

http://developer.android.com/reference/android/telephony/gsm/SmsManager.html

См How to get contacts' phone number in Android

+0

Это не то, что я ищу. –

+0

Открытый финал недействительным sendDataMessage (String DestinationAddress, String scAddress, короткие DestinationPort, байт [] данные, PendingIntent sentIntent, PendingIntent deliveryIntent) DestinationAddress \t адрес, чтобы отправить сообщение это телефонный номер человека, не имя, которое вы получить по ContactsContract.Contacts.DISPLAY_NAME – user1820553

+0

да, это правда. Я только что решил. Благодарю. –

Смежные вопросы