2013-10-14 4 views
0

Мне нужно открыть приложение sms из моего приложения, чтобы пользователь мог отправить сообщение, и мне нужно получить статус сообщения, даже если оно было отправлено, или нет. Является ли это возможным?Android - Открыть приложение sms с широковещательным приемником

Я знаю, как определить широковещательные приемники для отправки сообщения программно, но можно ли это сделать с помощью приложения sms?

Спасибо!

+0

почему вы должны сделать это с помощью приложения смс? – cYrixmorten

+0

Потому что мне нужно разрешить пользователю выбирать контакт. Я бы открыл приложение sms с уже написанным meesage, но без приемника. – cheloperel

+0

Я вижу .. ну, а сложная часть - получить статус смс в этом случае. Если вы сделаете свою собственную операцию, которая позволит выбрать контакт, можно было бы получить обратные вызовы SENT и DELIVERED плюс, если произошла ошибка. Но если вы вызываете другое текстовое приложение, нет никаких гарантий относительно того, какие трансляции послушать, чтобы получить эту информацию. – cYrixmorten

ответ

0

Вы можете отправить Сообщ программным

SmsManager smsManager = SmsManager.getDefault(); 

smsManager.sendTextMessage(phoneNo, null, sms, null, null); 

Toast.makeText(getApplicationContext(), "SMS Sent!",Toast.LENGTH_LONG).show(); 

Для Sms приемника

общественного класса SmsReceiver расширяет BroadcastReceiver {

public static final String SMS_EXTRA_NAME = "pdus"; 
public static final String SMS_URI = "content://sms"; 

public void onReceive(Context context, Intent intent) 
{ 
    // Get SMS map from Intent 
    Bundle extras = intent.getExtras(); 

    if (extras != null) 
    { 
     // Get received SMS array 
     Object[] smsExtra = (Object[]) extras.get(SMS_EXTRA_NAME); 

     for (int i = 0; i < smsExtra.length; ++i) 
     { 
      SmsMessage sms = SmsMessage.createFromPdu((byte[])smsExtra[i]); 

      if(IsBlackListNumber(context,sms)){ 
       this.abortBroadcast(); 
      // Toast.makeText(context, "BlackList", Toast.LENGTH_SHORT).show(); 
      } 
      else{ 
       //Toast.makeText(context, "No BlackList", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    } 

    // WARNING!!! 
    // If you uncomment next line then received SMS will not be put to incoming. 
    // Be careful! 
    // this.abortBroadcast(); 
} 

private boolean IsBlackListNumber(Context context, SmsMessage sms){ 
     boolean isExist = false; 

    ContactInfoDataSource datasource = new ContactInfoDataSource(context); 
    datasource.read(); 
    if(datasource.IsBlackListNumber(sms.getOriginatingAddress())){ 

     SmsInfoEnt smsInfoEnt = new SmsInfoEnt(); 
     smsInfoEnt.setMessage(sms.getMessageBody()); 
     smsInfoEnt.setName(datasource.GetName(sms.getOriginatingAddress())); 
     smsInfoEnt.setPhoneNo(sms.getOriginatingAddress()); 

     SmsInfoDataSource Smsdatasource = new SmsInfoDataSource(context); 
     Smsdatasource.open(); 
     Smsdatasource.AddBlockSMS(smsInfoEnt); 
     Smsdatasource.close(); 
     isExist = true; 
    } 
    datasource.close(); 

    return isExist; 
} 
} 
+0

Да, я знаю. Но мне нужно отправить его с помощью приложения sms, а не программно. Спасибо, в любом случае. – cheloperel

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