如果这是一个重复的帖子,我很抱歉,但相信我,我做了很多搜索。回到android 2.2我有一个静态广播接收器的应用程序,无论应用程序状态如何,每次收到新的文本消息时都会调用它。
现在,我试图有相同的行为,但在Android 5(我相信这是4.4后的事情)。一旦我的应用程序从最近的应用程序关闭,静态接收器就会停止工作。
Android现在如何运作?我在stackoverflow上找到了一个答案,说是这样,但我没有看到任何文档。
这里可能缺少一些东西:
<receiver
android:name="com.dimitar.android.test.comm.ControlMessagesReceiver"
android:exported="true"
android:enabled="true"
android:permission="android.permission.BROADCAST_SMS" >
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
如果是这样,那么我唯一的想法是听取启动事件并启动服务来处理我需要的东西。
答案 0 :(得分:2)
SMS有一些变化。请检查此示例以正确使用BroadcastReceiver进行SMS。
首先,您需要RECEIVE_SMS权限,因此请将其放入清单中:
<uses-permission android:name="android.permission.RECEIVE_SMS" />
将接收器配置添加到AndroidManifest.xml:
<receiver
android:name=".SmsReceiver"
android:enabled="true"
android:exported="true">
<intent-filter android:priority="999">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
最后,实现接收器类:
public class SmsReceiver extends BroadcastReceiver {
private String TAG = SmsReceiver.class.getSimpleName();
public SmsReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
// Get the data (SMS data) bound to intent
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
if (bundle != null) {
// Retrieve the SMS Messages received
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
// your code here ...
}
}
}
您可以在此博文中找到更多详细信息&#34; Android Send and Receive SMS&#34;。
答案 1 :(得分:0)
我应该说我正在测试小米R. Note 3设备与android 5。
看起来小米有一个安全应用程序可以控制几乎所有东西。 见another question and answer here