【问题标题】:Notifications for incoming text messages using service使用服务接收短信的通知
【发布时间】:2013-12-20 12:29:59
【问题描述】:

我对我几天以来的问题感到震惊。实际上我想要做的是创建一个通知服务来为用户提供警报,即使用户不在应用程序中。该服务应每 5 分钟检查一次传入消息。并且通知应该与通知抽屉中通知收件箱样式的方式完全相同。我需要通过单击通知来调用特定活动。谁能建议我怎么做?感谢您的帮助....

【问题讨论】:

  • 你需要注册一个广播接收器来监听新消息,然后启动一个服务来执行你的操作。
  • @Rohan Kandwal,该服务是否自动运行?我们如何注册广播接收器请提供一些代码..
  • 您无需每 5 分钟检查一次传入消息。我提供的代码将自动检测任何传入的消息。

标签: android service notifications


【解决方案1】:

首先,您需要获得接收和阅读短信的权限。您可以使用以下代码在androidManifest.xml 中执行此操作:-

    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.example.sms"
  android:versionCode="1"
  android:versionName="1.0">
<uses-sdk android:minSdkVersion="8" />

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

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <receiver android:name=".SMSBroadcastReceiver">
        <intent-filter>
            <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
        </intent-filter>
    </receiver>

</application></manifest>

然后你需要设置你的BroadcastReceiver来接收收到短信的通知。

public class SMSBroadcastReceiver extends BroadcastReceiver{

@Override
public void onReceive(Context context, Intent intent) {
    Bundle bundle = intent.getExtras();
    SmsMessage[] msgs = null;
    String str = "no message received";
    if(bundle != null){

        Object[] pdus = (Object[]) bundle.get("pdus");
        msgs = new SmsMessage[pdus.length];
        for(int i=0; i<msgs.length;i++){

            msgs[i]= SmsMessage.createFromPdu((byte[])pdus[i]);
            str += "SMS from Phone No: " +msgs[i].getOriginatingAddress();
            str +="\n"+"Message is: ";
            str += msgs[i].getMessageBody().toString();
            str +="\n";
        }

        Log.v("Debug", str);
        Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
    }
}}

上面的代码将为您获取短信发送者的联系号码和收到的消息。

【讨论】:

  • 现在,如果您想在收到短信时需要服务,那么您可以在 onReceive() 中启动服务
  • @user3057567 除了我不知道你到底想要什么服务之外,我不会做你的功课。 SO 是为了在您遇到任何不工作的问题时为您提供帮助。自行尝试,如果您遇到任何问题,我们随时为您提供帮助。
  • @user3057567 还有一些仅供参考,如果您看到任何对您有帮助的答案,请点赞,如果它解决了您的问题,则将答案标记为正确。快乐编码!!!
  • @user3057567 你的问题解决了吗?如果是,请将此问题标记为已解决。
  • 我也想做同样的事情,只是我的传入消息不是 SMS,而是通过 MQTT 代理(服务器)接收的 CAP 消息。您的解决方案是否适用于任何传入消息或仅适用于短信?谢谢
猜你喜欢
  • 2015-01-12
  • 1970-01-01
  • 1970-01-01
  • 2012-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-06
  • 1970-01-01
相关资源
最近更新 更多