Android 6

时间:2015-10-27 17:14:53

标签: android broadcastreceiver sms

我正在尝试捕获手机上收到的短信,但是当手机收到短信时,方法是“接收”'不叫。这是我的代码:

我在' AndroidManifest.xml'中声明了BroadcastReceiver。在标记'

    <receiver android:name=".util.IncomingSmsReceiver"
        android:exported="true">
        <intent-filter android:priority="2147483647">
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
        </intent-filter>
    </receiver>

这是IncomingSmsReceiver.java

public class IncomingSmsReceiver extends BroadcastReceiver {

    public static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";

    @Override
    public void onReceive(Context context, Intent intent) {

        Log.i(TAG, "onReceive executed");
        if (intent.getAction().equals(SMS_RECEIVED)) {
           ...
        }
   }
}

我正在使用Android 6在模拟器Google Nexus 5上进行测试。当我在模拟器中发送短信(假)时,会显示一条通知,好像收到的确实很好,我可以在默认情况下使用它带来模拟器的应用程序。在Android Studio的logcat中,您似乎没有运行方法onReceive或内部编写的代码。我尝试更改优先级,我尝试使用android:enabled="true" ,我已尝试使用registerReceiver而我还没有让它发挥作用。有谁知道我是否错过了什么?

1 个答案:

答案 0 :(得分:4)

您是否使用默认消息传递应用程序&#34;禁用其他应用程序&#34;国旗?

请看这个:

"android.provider.Telephony.SMS_RECEIVED" not working on my device (HTC Wildfire) - how to debug?

编辑:

由于您使用的是Android 6,因此应使用新的权限模型。看一下这个: http://developer.android.com/training/permissions/requesting.html