Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android广播接收器可扫描每一条收到的短信中的特定内容_Java_Android_Broadcastreceiver - Fatal编程技术网

Java Android广播接收器可扫描每一条收到的短信中的特定内容

Java Android广播接收器可扫描每一条收到的短信中的特定内容,java,android,broadcastreceiver,Java,Android,Broadcastreceiver,我想扫描每一个特定的内容传入短信。 找到特定内容后,将执行特定任务。 假设特定内容字符串为“Hello world”,当服务找到该字符串时,它将触发特定任务,即使用前置摄像头拍摄照片并将该照片放在特定文件夹中。 接收器必须在手机开机时始终运行。为此创建一个SMS广播接收器,在收到SMS时触发该接收器 public class SMSBroadcastReceiver extends BroadcastReceiver { private static final String

我想扫描每一个特定的内容传入短信。 找到特定内容后,将执行特定任务。 假设特定内容字符串为“Hello world”,当服务找到该字符串时,它将触发特定任务,即使用前置摄像头拍摄照片并将该照片放在特定文件夹中。
接收器必须在手机开机时始终运行。

为此创建一个SMS广播接收器,在收到SMS时触发该接收器

public class SMSBroadcastReceiver extends BroadcastReceiver {

        private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
        private static final String TAG = "SMSBroadcastReceiver";

        @Override
        public void onReceive(Context context, Intent intent) {
             Log.i(TAG, "Intent recieved: " + intent.getAction());

                if (intent.getAction() == SMS_RECEIVED) {
                    Bundle bundle = intent.getExtras();
                    if (bundle != null) {
                        Object[] pdus = (Object[])bundle.get("pdus");
                        final SmsMessage[] messages = new SmsMessage[pdus.length];
                        for (int i = 0; i < pdus.length; i++) {
                            messages[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
                        }
                        if (messages.length > -1) {
                            Log.i(TAG, "Message recieved: " + messages[0].getMessageBody());
                        }
                    }
                }
           }
    }
公共类SMSBroadcastReceiver扩展广播接收器{
私有静态最终字符串SMS_RECEIVED=“android.provider.Telephony.SMS_RECEIVED”;
私有静态最终字符串TAG=“SMSBroadcastReceiver”;
@凌驾
公共void onReceive(上下文、意图){
Log.i(标记“Intent received:+Intent.getAction());
if(intent.getAction()==SMS_已接收){
Bundle=intent.getExtras();
if(bundle!=null){
Object[]pdus=(Object[])bundle.get(“pdus”);
最终SmsMessage[]消息=新SmsMessage[pdus.length];
对于(int i=0;i-1){
Log.i(标记“MessageReceived:+messages[0].getMessageBody());
}
}
}
}
}
在接收器内部,您可以检查接收到的文本并执行特定操作

也在舱单上声明

 <receiver android:name=".SMSBroadcastReceiver">
            <intent-filter>
                <action android:name="android.provider.telephony.SMS_RECEIVED"></action>
            </intent-filter>
        </receiver>

还要声明权限

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


U需要一个广播接收器,而不是一个服务。我怀疑用户是否希望扫描他们的短信。我从我的老公司的客户那里得到了一个特定的GPS消息,为了避免这种情况,我创建了一个与之相同的应用程序。每当我收到包含特定单词的消息时,我的应用程序都会将其从收件箱中删除,并将内容写入一个文件以备备份。请向我们展示您迄今为止获得的信息。很好的示例,但您需要用于什么目的?Sahil,如果你的应用程序中没有任何活动,我怀疑你的代码在Android 3.0及以上版本上无法工作。我已经对姜饼进行了测试,但我对Android 3.0没有把握。我不认为广播接收器依赖于任何活动。明白了。因此,在Android 3.0或更高版本的情况下,应该使用一个活动来启动接收器。我不确定OP是否真的想使用某个活动。不过,半透明的活动可能是一个不错的选择。