2015-06-03 81 views
1

我用BroadcastReceiver來顯示收到的短信的內容Toast。它工作正常。在Toast中顯示內容。但它也會顯示對話框中的消息。 enter image description hereBroadcastReceiver在Android中自動讀短信

而且該消息進入讀取狀態。任何方式來避免這種情況。 我BroadcastReceiver

public class Receiver extends BroadcastReceiver { 

    public static final String action = "android.provider.Telephony.SMS_RECEIVED"; 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 
     if (intent.getAction().equals(action)){ 
      Bundle bundle = intent.getExtras(); 
      if (bundle != null){ 
       Object[] pdus = (Object[]) bundle.get("pdus"); 
       SmsMessage[] messages = new SmsMessage[pdus.length]; 
       for (int i = 0; i < pdus.length; i++){ 
        messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); 
       } 
       for (SmsMessage message : messages){ 

        String strMessageFrom = message.getDisplayOriginatingAddress(); 
        String strMessageBody = message.getDisplayMessageBody(); 

        Toast.makeText(context, "From : " +strMessageFrom+"\nBody : "+strMessageBody, Toast.LENGTH_LONG).show(); 
       } 
      } 
     } 
    } 

的AndroidManifest.xml是

<?xml version="1.0" encoding="utf-8"?> 

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

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" > 

     <intent-filter>> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <receiver 
     android:name="com.realtech.sms_db.Receiver" 
     android:enabled="true" 
     android:exported="true" 
     android:permission="android.permission.BROADCAST_SMS"> 
     <intent-filter 
      android:priority="1000"> 
      <action android:name="android.provider.Telephony.SMS_RECEIVED"/> 
     </intent-filter> 
    </receiver> 
</application> 

回答

2

我的理解,這個問題是「爲什麼它是在讀狀態去」?實施沒有任何問題。由於設備通知設置爲「自動預覽」,傳入的消息被標記爲「讀取」不是因爲被處理。這就是爲什麼你能看到窗戶。要禁用「自動預覽」,請執行以下步驟: - 步驟1:轉到消息文件夾 步驟2:選擇菜單(3個點)。 第3步:選擇「設置」 第4步:向下滾動到「通知設置」 第5步:選擇「通知設置」 步驟6:取消選中「預覽消息」附近的框。

希望它可以幫助你。

+0

是啊。當我以某種方式安裝此應用程序時,Popup通知已打開。無論如何感謝您的回答。 –

1

顯示AlertDialog.Builder,並使用自定義佈局。設置警報類型TYPE_SYSTEM_ALERT

樣品

AlertDialog.Builder builder=new AlertDialog.Builder(this); 
    builder.setView(yourCustomView); 
    AlertDialog dialog=builder.create(); 
    dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); 
    dialog.show(); 
+0

我不想顯示任何'AlertDialog'。我只想要默認通知。 –