2016-03-12 47 views
0

我試圖創建簡單的應用程序,接收SMS運行時服務。 我寫的所有代碼,我仍然看不到任何服務運行在短信接收。爲什麼我的服務沒有運行?

代碼

  1. 服務

    public class MainService extends Service { 
    
    @Override 
    public IBinder onBind(Intent arg0) { 
        return null; 
        } 
    
    
        @Override 
        public void onCreate() { 
    
        Toast.makeText(this, "onCreate", Toast.LENGTH_SHORT).show(); 
    
        super.onCreate(); 
    
        } 
    
    @Override 
    public void onDestroy() { 
        super.onDestroy(); 
        } 
    
    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
    
    Toast.makeText(this, "onStartCommand", Toast.LENGTH_SHORT).show(); 
    
    return START_STICKY; 
        } 
    } 
    
  2. 的廣播接收器類

    public class SmsReceiver extends BroadcastReceiver { 
        private static final String ACTION = "android.provider.Telephony.SMS_RECEIVED"; 
    
    
    @Override 
    public void onReceive(Context context, Intent intent) { 
    
    
         context.startService(new Intent(context, MainService.class)); 
    
          // TODO - complete the sms analyze 
        } 
    } 
    
  3. 的AndroidManifest

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
        <uses-permission android:name="android.permission.RECEIVE_SMS"/> 
    
    
    <application 
        android:allowBackup="true" 
        android:icon="@mipmap/ic_launcher" 
        android:label="@string/app_name" 
        android:supportsRtl="true" 
        android:theme="@style/AppTheme"> 
    
    
    
    <service android:name=".MainService"/> 
    
    <receiver android:name=".SmsReceiver"> 
        <intent-filter> 
         <action android:name="android.provider.Telephony.SMS_RECEIVED"/> 
        </intent-filter> 
    </receiver> 
    

+0

你加<使用許可權的android:NAME = 「android.permission.RECEIVE_SMS」>在您的清單?或者你確定onReceive(),它正在運行或沒有? –

+0

是的,我添加了許可權和的onReceive沒有采取行動時,短信接收 – Yanshof

+0

問題是廣播接收器。我們的代碼中的所有內容都很好它現在應該工作。如果沒有,則在清單中添加權限android.permission.RECEIVE_SMS和android.permission.READ_SMS。然後再試一次。如果工作,Plz讓我知道。 –

回答

0
I also suffered this such issue earlier. I solved the same by using the flag android:enabled="true". 

<receiver android:name=".SmsReceiver" android:enabled="true" 
     android:priority="2000000" > 

    <intent-filter> 

     <action android:name="android.provider.Telephony.SMS_RECEIVED"/> 

    </intent-filter> 

</receiver> 

實際上默認情況下它會被啓用。我不怎麼會在以後更改。請參閱文檔http://developer.android.com/guide/topics/manifest/receiver-element.html

否則你可以做的一件事就是對優先級部分。能否請你使用的優先權,其大於1000 例如: - 機器人:優先=「2000000」。

在你的Android設備你有具有較高優先級的接收短信的應用。他們得到時可能會阻止短信。

+0

嘗試它已經...不工作:( – Yanshof

+0

我已經編輯我的答案通過添加優先級。請檢查。這一次您的問題將解決不要擔心:) –

+0

我可以知道,是否它解決了這個問題? –

相關問題