【发布时间】:2018-10-12 22:27:27
【问题描述】:
我正在开发一个 Android 应用程序,即使我的应用程序关闭,它也会检测并扫描 SMS 的内容。我知道 BroadcastReceiver 是解决这个问题的方法,我已经开发了代码,但不幸的是没有得到预期的输出。
这是我的活动文件
public class SMSBroadcastReceiver extends BroadcastReceiver {
private static final String TAG = SMSBroadcastReceiver.class.getSimpleName();
public static final String SMS_CONTENT = "sms_content";
@Override
public void onReceive(Context context, Intent intent) {
Log.i(TAG, "Intent recieved: " + intent.getAction());
Cursor c = context.getContentResolver().query(Uri.parse("content://sms/inbox"), null, null, null, null);
c.moveToFirst();
String smsBody = c.getString(12);
Toast.makeText(context, "SMS RECEIVED:", Toast.LENGTH_LONG).show();
Toast.makeText(context, smsBody, Toast.LENGTH_LONG).show();
}
}
我也在我的清单中包含了这些行
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.READ_SMS"/>
<receiver android:name=".SMSBroadcastReceiver">
<intent-filter>
<action android:name="android.provider.telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
如何找出问题所在以及为什么我无法 Toast 传入的 SMS?
【问题讨论】:
-
Telephony需要在清单中的"android.provider.telephony.SMS_RECEIVED"中大写。也就是说,它应该是"android.provider.Telephony.SMS_RECEIVED"。另外,请注意,当您收到此广播时,新消息可能尚未写入 Provider。
标签: android sms broadcastreceiver