我正在尝试为我的本地总线系统制作应用程序。他们有一项服务,您可以在其中发送一个4位数的停止标识,并查看下一次公交车何时出现。
这些ID很难记住,所以我正在创建一个具有停止逻辑名称的应用程序,当您点击它们时,它会为您发送一个包含正确ID的SMS。
然后他们会向您发送短信回复。我想要回复我的应用程序,并在那里处理一些解析和漂亮的GUI的东西。但是,系统SMS应用程序也获取文本。我宁愿没有这种双重回应。
是否可以将响应定向到我的应用而不是其他应用?
答案 0 :(得分:1)
是的,这是可能的。
首先,在你的清单中,你需要将接收者的优先级设置为一个非常高的值:
<intent-filter android:priority="999">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
这可确保您的应用程序首先收到SMS。然后,在您收到并处理SMS的代码中,输入以下代码:
this.abortBroadcast();
这会阻止将SMS发送到其他接收器。
答案 1 :(得分:1)
我认为这是可能的。 在android中有两种广播,
普通广播不能阻止,但可以订购。
SMSReceiver是一种有序的广播。 在SMSDispatcher.java
void dispatch(Intent intent, String permission) {
// Hold a wake lock for WAKE_LOCK_TIMEOUT seconds, enough to give any
// receivers time to take their own wake locks.
mWakeLock.acquire(WAKE_LOCK_TIMEOUT);
mContext.sendOrderedBroadcast(intent, permission, mResultReceiver,
this, Activity.RESULT_OK, null, null);
}
因此我们可以注册广播接收器并将android:priority设置为一个大数字
和接收者abortBroadcast()
。我想它可能有用。