2013-10-14 127 views
0

我需要从我的应用程序中打开SMS应用程序,使用户可以发送一个信息,我需要得到它,甚至发送或没有消息的状态打开SMS应用。可能吗?Android的 - 与广播接收器

我知道如何定义广播接收机以编程方式发送邮件,但可以使用SMS的应用做呢?

谢谢!

+0

为什么你需要使用SMS的应用做呢? – cYrixmorten

+0

因为我需要允许用户选择一个联系人。我会用已经写好但没有接收器的meesage打开短信应用程序。 – cheloperel

+0

我看到..以及棘手的部分是获得在这种情况下,短信的状态。如果你想使自己的活动,能够选择一个联系人,将有可能获得发送和传递回调再加上如果发生错误。但是,如果您拨打另一个短信应用程序,则无法保证收听这些信息的广播。 – cYrixmorten

回答

0

您可以发送味精编程

SmsManager smsManager = SmsManager.getDefault(); 

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

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

短信接收器

公共类SmsReceiver扩展广播接收器{

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

是的,我知道。但我需要用短信应用程序发送它,而不是编程。不管怎么说,还是要谢谢你。 – cheloperel