2016-08-22 33 views
0

我有一個服務在前臺運行,在這個服務中我有一個廣播接收器,它監聽SMS_RECEIVED動作。Android- SMS_RECEIVED +在前臺服務崩潰中廣播

當用戶在應用程序中(應用程序和服務都在前臺)時,一切正常,我收到了意圖。

但是,當用戶存在應用程序(只有廣播服務在前臺)時,服務停止收到短信時。

服務停止時,在任何地方都找不到錯誤報告(不在logcat中,也不會彈出對話框)。

我與廣播服務:

public class myService extends IntentService { 
    private final BroadcastReceiver mReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      Toast.makeText(myService.this, intent.getAction(), Toast.LENGTH_SHORT).show(); 
     } 
    }; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     IntentFilter i= new IntentFilter("android.provider.Telephony.SMS_RECEIVED"); 
     i.setPriority(999); 
     registerReceiver(mReceiver, receiverFilter); 
     startForeground(...); 
    } 

    public void onDestroy() { 
     super.onDestroy(); 
     stopForeground(true); 
    } 
} 

,我也有我的清單以下權限:

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

爲myService聲明這樣的清單:

<service 
     android:name=".Services.myService" 
     android:enabled="true" 
     android:exported="false" /> 
+0

你可以顯示錯誤的logcat嗎? –

+0

嘿@MasterDisaster,有logcat顯示沒有錯誤。 – user12597562891

+0

'前臺服務崩潰'因此崩潰或不崩潰。如果崩潰,你應該在logcat中出現錯誤。 –

回答

0

我有同樣的問題,我解決了它刪除<uses-permission android:name="android.permission.RECEIVE_SMS" />。但取消此權限,我無法檢測到傳入的短信,所以我創建了這樣的類,如Catching Outgoing SMS using ContentObserver,並使用MESSAGE_TYPE_RECEIVED = 1而不是MESSAGE_TYPE_SENT = 2。您需要添加此權限<uses-permission android:name="android.permission.READ_SMS" />