2015-08-15 27 views
2

我正嘗試使用廣播接收器在我的應用中閱讀傳入短信,並且也能夠這樣做。但是,如果有人在Google環聊中收到短信而不是默認的短信應用,則廣播接收器不起作用。谷歌環聊或其他應用程序收到它時收聽Android傳入短信

以下是代碼我使用:

public class SmsListener extends BroadcastReceiver { 

// Get the object of SmsManager 
final SmsManager sms = SmsManager.getDefault(); 

public void onReceive(Context context, Intent intent) { 

    // Retrieves a map of extended data from the intent. 
    final Bundle bundle = intent.getExtras(); 

    try { 

     if (bundle != null) { 

      final Object[] pdusObj = (Object[]) bundle.get("pdus"); 

      for (int i = 0; i < pdusObj.length; i++) { 

       SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]); 
       String phoneNumber = currentMessage.getDisplayOriginatingAddress(); 

       String senderNum = phoneNumber; 
       String message = currentMessage.getDisplayMessageBody(); 

       Log.i("SmsReceiver", "senderNum: "+ senderNum + "; message: " + message); 


       // Show Alert 
       int duration = Toast.LENGTH_LONG; 
       Toast toast = Toast.makeText(context, 
         "senderNum: "+ senderNum + ", message: " + message, duration); 
       toast.show(); 

      } // end for loop 
     } // bundle is null 

    } catch (Exception e) { 
     Log.e("SmsReceiver", "Exception smsReceiver" +e); 

    } 
} 

資訊清單:

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

權限:

<uses-permission android:name="android.permission.RECEIVE_SMS" /> 
<uses-permission android:name="android.permission.READ_SMS" /> 
<uses-permission android:name="android.permission.SEND_SMS" /> 
+0

您是否找到了解決方案? – GunnerFan

回答

0

你添加此權限嗎?

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

是也添加了該權限。 –

0

您可能希望將android優先級值設置爲合適的值。

有序廣播(使用Context.sendOrderedBroadcast發送)一次傳遞給一個接收者。當每個接收器依次執行時,它可以將結果傳播到下一個接收器,或者它可以完全中止廣播,使其不會傳遞給其他接收器。運行的訂單接收器可以通過匹配意圖過濾器的android:priority屬性進行控制;具有相同優先級的接收器將以任意順序運行。

+0

我需要爲此添加什麼樣的權限? –

+0

不是權限,但需要在android清單文件中添加一個'android:priority' =語句。 –

相關問題