Android BroadcastReceiver没有收到任何东西(短信)

时间:2014-10-15 15:55:29

标签: android sms broadcastreceiver broadcast

我知道很多人都有同样的问题,我在stackoverflow上看了很多,但对我来说还是BroadcastReceivers没有收到短信......

清单:



<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="de.msit_hosting.bos_lage_fms"
    android:versionCode="5"
    android:versionName="0.0.1b" >

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="19" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.WRITE_SMS" />
    
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
        <receiver android:name="de.msit_hosting.bos_lage_fms.SMSReceiver" android:exported="true" android:enabled="true" >
		  <intent-filter android:priority="2147483647">
		    <action android:name="android.provider.Telephony.SMS_RECEIVED" />
		  </intent-filter>
		</receiver>
        
        <activity
            android:name=".FMSActivity"
            android:label="@string/app_name" 
            android:screenOrientation="portrait"
            android:configChanges="keyboardHidden|orientation|screenSize" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".SettingsActivity"
            android:label="@string/title_activity_settings" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="de.msit_hosting.bos_lage_fms.FMSActivity" />
        </activity>
        
        <service
        android:name=".PositionSendService"
        android:label="Position send Service" >
    	</service>
    	
        <receiver android:name="de.msit_hosting.bos_lage_fms.SMSReceiver" android:exported="true" android:enabled="true" >
		  <intent-filter android:priority="2000">
		    <action android:name="android.provider.Telephony.SMS_RECEIVED" />
		  </intent-filter>
		</receiver>
    </application>

</manifest>
&#13;
&#13;
&#13;

接收器:

&#13;
&#13;
package de.msit_hosting.bos_lage_fms;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.util.Log;

public class SMSReceiver extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {
		Log.e("SMS", "Receiver fired...");
		
		/*
		Bundle data = intent.getExtras();
		
		if(data != null) {
			Object[] sms_data = (Object[])data.get("pdus");
			
			for(int i = 0; i < sms_data.length; i++) {
				SmsMessage msg = SmsMessage.createFromPdu((byte[])sms_data[i]);
				
				String src = msg.getDisplayOriginatingAddress();
				String body = msg.getMessageBody();
			
				if(src != null && body != null) {
					Log.i("SMS", src + ": " + body);
				}
			}
		}
		*/
	}
	
}
&#13;
&#13;
&#13;

出于测试原因,我注释掉了除Log-message之外的所有内容 - 但即使这样也没有调用。我在这里和其他论坛上尝试了较低的优先级和其他建议,但没有任何作用。

对我而言,它很特别,它不是Handcent或类似的阻止消息的东西,因为即使在Android Emulator上也没有显示Log消息......

你能帮忙吗?

谢谢

梅林

1 个答案:

答案 0 :(得分:0)

请尝试以下更改:

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

另外,根据您的操作系统版本,您可能需要安装应用程序,运行一次,然后您可能会看到结果。 如果任何这些更改解决了您的问题,那可能是:

错误的课程目标。您似乎附加了两次包名称。

错误的优先级,谷歌文档声明开发人员应使用介于-999和999之间的整数值

错误的版本启动。我确实认为这是版本3.1,其中broacastreceivers需要一个活动才能让他们正确注册。