Android 19 岁以上的 SMS 静态广播接收器(当应用程序关闭时)api

Android static broadcast receivers for SMS (when app is closed) in 19+ api

如果这是重复的,我很抱歉 post,但相信我,我做了很多搜索。回到 android 2.2,我有一个带有静态广播接收器的应用程序,无论应用程序状态如何,每次收到新短信时都会调用它。

现在,我试图有相同的行为,但是在 android 5 上(我相信这是 post 4.4 的事情)。一旦我的应用程序从最近的应用程序中关闭,静态接收器就会停止工作。

Android 现在是这样工作的吗?我在 Whosebug 上找到了一个答案,说是这样,但我没有看到文档。

也许这里缺少一些东西:

        <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>

如果是这样,那么我唯一的想法就是监听启动事件并启动一个服务来处理我需要的东西。

短信有一些变化。检查此示例以正确使用 BroadcastReceiver for 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>

最后,实现接收器class:

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 ...
        }
    }
}

您可以在此博客中找到更多详细信息post“Android Send and Receive SMS”。

我应该说我正在用 android 5.

在小米 R.Note 3 设备上进行测试

看起来小米有一个安全应用程序可以控制几乎所有的东西。 参见