android:android.provider.Telephony.SMS_在哪里收到?

android:android.provider.Telephony.SMS_在哪里收到?,android,Android,我正在编写一个需要接收短信的应用程序,每个人都在代码中使用“android.provider.Telephony.sms\u RECEIVED\u ACTION”意图操作,但看起来API级别17不再支持它了! 它现在在哪里?我也没有在“android.telephony”类中找到收到的短信! 请有人告诉我,我完全糊涂了。我应该使用旧的api吗?android。telephony类提供了有关api级别1中引入的手机状态的信息。有关更多详细信息,请阅读此 android.telephony.smsm

我正在编写一个需要接收短信的应用程序,每个人都在代码中使用“android.provider.Telephony.sms\u RECEIVED\u ACTION”意图操作,但看起来API级别17不再支持它了! 它现在在哪里?我也没有在“android.telephony”类中找到收到的短信!
请有人告诉我,我完全糊涂了。我应该使用旧的api吗?

android。telephony
类提供了有关api级别1中引入的手机状态的信息。有关更多详细信息,请阅读此


android.telephony.smsmsmanager
用于从设备收件箱获取消息信息。你可以在这里看看


没有迹象表明它们在api级别17中被弃用。

我们需要阅读本文档

从Android 4.4开始,您应该停止收听SMS_RECEIVED_操作广播,您可以在运行时通过检查平台版本,然后使用PackageManager.setComponentEnabledSetting()禁用SMS_RECEIVED_操作的广播接收器。但是,如果你的应用程序只需要阅读特殊的短信,例如执行电话号码验证,你可以继续收听该广播。请注意,从Android 4.4开始,您的应用程序中止SMS_RECEIVED_动作广播的任何尝试都将被忽略,因此所有感兴趣的应用程序都有机会接收


我想我们必须为KitKat做准备。这是一件令人烦恼的事

在API 19(4.4-KitKat)之前,电话类没有记录在案的API。上课缺席并不意味着你所做的事情不起作用。您需要请求此权限:

<uses-permission android:name="android.permission.RECEIVE_SMS"/>
以下是grepcode.com对源代码的引用:


请注意类声明前面的“@hide”——它在那里,但不向开发人员公开。这就是为什么它在ADT中无法识别。

您可以在代码中使用
Telephony.Sms.Intents.Sms\u RECEIVED\u ACTION

以下是我的工作代码:

public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(Telephony.Sms.Intents.SMS_RECEIVED_ACTION)) {
        Bundle bundle = intent.getExtras();

        if (bundle != null) {
        }
    }
}

您必须导入
导入android.provider.Telephony

你怎么会认为它不受欢迎?谢谢你提供的信息。我说android.provider.telephony被替换了,telephony.SMS\u RECEIVED\u动作消失了!我想知道在哪里可以找到它
public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";
public void onReceive(Context context, Intent intent) {
    if (intent.getAction().equals(Telephony.Sms.Intents.SMS_RECEIVED_ACTION)) {
        Bundle bundle = intent.getExtras();

        if (bundle != null) {
        }
    }
}