我知道很多人都有同样的问题,我在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;
接收器:
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;
出于测试原因,我注释掉了除Log-message之外的所有内容 - 但即使这样也没有调用。我在这里和其他论坛上尝试了较低的优先级和其他建议,但没有任何作用。
对我而言,它很特别,它不是Handcent或类似的阻止消息的东西,因为即使在Android Emulator上也没有显示Log消息......
你能帮忙吗?
谢谢
梅林
答案 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需要一个活动才能让他们正确注册。