Android 短信广播接收机不';我没有收到短信

Android 短信广播接收机不';我没有收到短信,android,sms,broadcastreceiver,Android,Sms,Broadcastreceiver,我所做的 大家好,我现在正在创建一个SMS广播接收器,我刚刚用本教程构建了一个。完成代码后,我更新了清单。在那之后,我从我的另一部手机发送短信到我的手机,但它没有工作。我没有得到任何输出 问题 我需要改变什么,才能收到这些短信。请给我一个详细的答案,我可以学习它,一个好的教程也将是伟大的 代码 SMSBroadcastReceiver(在包服务中) package de.retowaelchli.filterit.services; 导入de.retowaelchli.filterit.R

我所做的


大家好,我现在正在创建一个SMS广播接收器,我刚刚用本教程构建了一个。完成代码后,我更新了清单。在那之后,我从我的另一部手机发送短信到我的手机,但它没有工作。我没有得到任何输出

问题


我需要改变什么,才能收到这些短信。请给我一个详细的答案,我可以学习它,一个好的教程也将是伟大的

代码


SMSBroadcastReceiver(在包服务中)

package de.retowaelchli.filterit.services;
导入de.retowaelchli.filterit.R;
导入android.app.Notification;
导入android.app.NotificationManager;
导入android.app.pendingent;
导入android.content.BroadcastReceiver;
导入android.content.Context;
导入android.content.Intent;
导入android.os.Bundle;
导入android.telephony.sms消息;
导入android.util.Log;
导入android.widget.Toast;
公共类SmileySmsReceiver扩展了BroadcastReceiver{
@凌驾
公共void onReceive(上下文、意图)
{
//---获取传入的SMS消息---
Log.d(“SmileySmsReceiver”,“是的,它调用onReceive”);
Bundle=intent.getExtras();
SmsMessage[]msgs=null;
字符串str=“”;
if(bundle!=null)
{
//---检索收到的SMS消息---
Object[]pdus=(Object[])bundle.get(“pdus”);
msgs=新SMS消息[PDU.length];
对于(int i=0;i
用于(int i=0;i将
置于
标记之外:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="de.retowaelchli.filterit"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="10" />

    <uses-permission android:name="android.permission.RECEIVE_SMS" />

    <application android:icon="@drawable/icon"
                 android:label="@string/app_name"
                 android:debuggable="true"
                 android:screenOrientation="sensor"
                 android:theme="@style/FilterIt.Theme"> 

    <!-- Receiver -->
        <receiver android:name="de.retowaelchli.filterit.services.SmileySMSBroadcastReceiver"> 
            <intent-filter android:priority="999"> 
                <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
            </intent-filter> 
        </receiver>
       …
       …
    </application>
</manifest>

高格勒布在这里为我指出了正确的方向,他对公认答案的评论,我认为我应该分享我的发现

Handcent确实是个坏孩子,安装后不允许任何其他应用程序接收消息

幸运的是,如果您不想卸载Handcent,有一个简单的解决方案:

在Handcent的应用程序设置中,有一个选项可以使Handcent成为默认的消息传递应用程序。如果禁用此选项,消息可以传递给其他接收者。

onCreate
方法中的
MainActivity
中授予权限。它将起作用

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_CONTACTS, Manifest.permission.READ_SMS, Manifest.permission.SEND_SMS, Manifest.permission.RECEIVE_SMS}, 10);

}

我这样做了,但它不起作用,我仍然没有收到包含消息的toastmessage,有什么问题:(?在logcat中,我没有任何输出,我也在代码中输入了一些Log.v,但我也没有看到它们。@safari使用广播接收器的完整类名:
(请参阅我更新的答案)我试过这个,我仍然没有在我的日志上看到任何关于我的接收应用程序的信息,比如Hancent sms和go sms被黑客攻击,这是我实现我的sms接收器的方式,如果你愿意,我可以明天发布我的实现。
for (int i=0; i<pdus.length; i++)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="de.retowaelchli.filterit"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="10" />

    <uses-permission android:name="android.permission.RECEIVE_SMS" />

    <application android:icon="@drawable/icon"
                 android:label="@string/app_name"
                 android:debuggable="true"
                 android:screenOrientation="sensor"
                 android:theme="@style/FilterIt.Theme"> 

    <!-- Receiver -->
        <receiver android:name="de.retowaelchli.filterit.services.SmileySMSBroadcastReceiver"> 
            <intent-filter android:priority="999"> 
                <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
            </intent-filter> 
        </receiver>
       …
       …
    </application>
</manifest>
<receiver android:name="YourSmsBroadcastReceiver">
    <intent-filter android:priority="999"> 
        <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
    </intent-filter>
</receiver>
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_CONTACTS, Manifest.permission.READ_SMS, Manifest.permission.SEND_SMS, Manifest.permission.RECEIVE_SMS}, 10);

}