Android:尽管被宣布,广播接收器仍无法正常工作

时间:2015-03-23 15:00:57

标签: android android-intent android-broadcast

我正在尝试接收各种意图来审核手机上的使用活动。我正在使用AndroidStudio,这是我的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.tomm.vpandroid2" >

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.RECEIVE_MMS" />
    <uses-permission android:name="android.permission.WRITE_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <uses-permission android:name="android.permission.CAMERA" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".SettingsActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver
            android:name=".GlobalEventsReceiver"
            android:enabled="true" >
            <intent-filter>
                <action android:name="android.intent.action.BROADCAST" />
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
                <action android:name="android.provider.Telephony.WAP_PUSH_RECEIVED" />
                <data android:mimeType="application/vnd.wap.mms-message" />
                <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
                <action android:name="android.intent.action.PHONE_STATE" />
                <action android:name="android.intent.action.SCREEN_ON" />
                <action android:name="android.hardware.action.NEW_PICTURE" />
                <action android:name="android.hardware.action.NEW_VIDEO" />
            </intent-filter>
        </receiver>
    </application>
</manifest>

这是GlobalReceiver:

package com.tomm.vpandroid2;
public class GlobalEventsReceiver extends BroadcastReceiver {
    private final String TAG = "viprol.receiver";

    public GlobalEventsReceiver() {
        Log.i(TAG, "global receiver constructed");
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.i(TAG, "received action");
    }
}

问题是ctor和onReceive()方法永远不会被调用(即使我在它们上面设置断点并进行调试)。

我正在使用OnePlusOne并已禁用此应用程序的PrivateGuard。不知道还有什么可以尝试?

1 个答案:

答案 0 :(得分:1)

首先,您只会匹配MIME类型为application/vnd.wap.mms-message的广播。据推测,你想在同一个<intent-filter>的单独<receiver>中推出它以及相关的操作,尽管近年来我还没有使用过很多WAP。

其次,我不知道有一个名为BROADCAST的广播,就像你的第一个<action>一样。

第三,IIRC,你不能从一个清单注册的接收者列出SCREEN_ON,而只能从通过registerReceiver()注册的接收者列出。