如何在收到短信时制作应用 运行

How to make a app run whenever you receive an sms

我正在制作一个应在 Phone 收到包含特定内容(如密码)的短信时启动的应用程序。我已经尝试了很多代码,但它仍然不起作用。谁能帮帮我?

这是我的代码: SmsReceiver.java

package com.example.william.better_gps;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.widget.Toast;

public class SmsReceiver extends BroadcastReceiver {

public void onReceive(Context context, Intent intent) {

    Toast.makeText(context, "message", Toast.LENGTH_LONG).show();

}
}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.william.better_gps" >
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />

 <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <receiver android:name=".SmsReceiver"
        android:enabled="true">
        <intent-filter android:priority="999">
            <action android:name="android.provider.Telephony.SMS_RECEIVED"/>

        </intent-filter>
    </receiver>



</application>
</manifest>

哦,有没有什么方法可以模拟短信,这样我就不必让别人发短信给我,如果我想检查它是否正常工作

您正在将应用程序设置为 运行 作为启动器应用程序,只有当您单击图标 运行 时才会发生这种情况。您需要指定用于在收到短信时启动应用程序的意图过滤器。然后在代码中你可以在 Main activity 中设置一个广播接收器来监听后续的文本。

<activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:theme="@style/AppTheme.NoActionBar" >
    <intent-filter>
        <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

不要在 API 级别 23 操作中使用 compileSdkVersion、targetSdkVersion、buildToolsVersion 23 或大于 that.Because SMS_RECEIVED 在广播接收器中给予权限被拒绝
使用 21 或低于 that.below 配置适合我

compileSdkVersion 21
buildToolsVersion "21.1.2"
targetSdkVersion 21