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);
}