2012-11-11 85 views
1

我遇到了一些小問題。我無法讓我的廣播接收器顯示任何吐司消息。也許我不能以某種方式觸發它,但我的發件人工作。我想知道它是否觸發。在android中無法接收短信

主類

public class Main_Activity extends Activity { 


Button buttonSend; 
EditText textPhoneNo; 
EditText textSMS; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Button buttons = (Button) findViewById(R.id.gett); 
    buttonSend = (Button) findViewById(R.id.buttonSend); 
    textPhoneNo = (EditText) findViewById(R.id.editTextPhoneNo); 
    textSMS = (EditText) findViewById(R.id.editTextSMS); 
    EditText edt = (EditText)findViewById(R.id.reciving); 


    buttons.setOnClickListener(new OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
     // EditText edt = (EditText)findViewById(R.id.reciving); 
     // SmsReceiver obj = new SmsReceiver(); 
     // String test = obj.number2; 
     // edt.setText("you stupid result "+test); 

     } 
    }); 

    SmsReceiver obj = new SmsReceiver(); 
// String test = obj.number2; 
// edt.setText("you stupid result "+test); 





    buttonSend.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
     // TODO Auto-generated method stub 

     String phoneNo = textPhoneNo.getText().toString(); 
     String sms = textSMS.getText().toString(); 

     try{ 
      SmsManager smsManager = SmsManager.getDefault(); 
      smsManager.sendTextMessage(phoneNo, null, sms, null, null); 


     }catch (Exception e) 
     { 
      System.out.println("Not send"); 
     } 





    } 
}) ; 


} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 
} 

SmsReceiver類:

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 = "";    
    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]);     
      str += "SMS from " + msgs[i].getOriginatingAddress();      
      str += " :"; 
      str += msgs[i].getMessageBody().toString(); 
      str += "\n";   
     } 
     //---display the new SMS message--- 
     Toast.makeText(context, str, Toast.LENGTH_SHORT).show(); 
    }       
} 
} 

Mainifest

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="dom.example.sms_exp" 
    android:versionCode="1" 
    android:versionName="1.0" > 

<uses-permission android:name="android.permission.SEND_SMS" /> 
<uses-permission android:name="android.permission.SEND_SMS" /> 

<uses-sdk 
    android:minSdkVersion="8" 
    android:targetSdkVersion="15" /> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".Main_Activity" 
     android:label="@string/title_activity_main_" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <receiver android:name=".SmsReceiver" > 
     <intent-filter> 
      <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
     </intent-filter> 
    </receiver> 

    <activity 
     android:name=".SmsReceiver" 
     android:label="@string/title_activity_send_activity" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 
</manifest> 

普萊斯電子幫助,我有一個項目明天提交。

+0

其中msg在烏拉圭回合清單接收許可。添加「<使用權限android:name =」android.permission.RECEIVE_SMS「/>」 權限接收消息。 – Pargat

+0

我正在做類似的事情! http://stackoverflow.com/questions/14452808/sending-and-receiving-mms-in-android – toobsco42

回答

0

,如果你想你的應用程序接收短信廣播,那麼你必須在manifast

<uses-permission android:name="android.permission.RECEIVE_SMS"/> 

以下權限和改變你的SmsReceiver代碼:

public class SmsReceiver extends BroadcastReceiver 
{ 
    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) 
      { 
       //put your code here.... 
      } 
     else{ 
      // do something here... 
      } 
    } 
} 
+1

男人謝謝你,男人謝謝你,男人謝謝你,男人謝謝 它做到了這一點,上帝保佑你 –

+0

@ ZeeshanIsmail:最受歡迎的朋友!!! :) –