为广播接收机提供最高优先级的整数值是多少?
<intent-filter android:priority="1">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud) 在经历了几个资源和问题后,我仍然面临检测传入SMS消息的问题.
下面的代码显示了基础知识:
显示Toast onReceive的广播接收器类
public class IncomingSms extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "something received", Toast.LENGTH_SHORT).show();
}
}
Run Code Online (Sandbox Code Playgroud)
简单清单,注册接收者和权限
<application
<receiver
android:name=".IncomingSms"
android:permission="android.permission.BROADCAST_SMS"
android:exported="true">
<intent-filter android:priority="2147483647" >
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
Run Code Online (Sandbox Code Playgroud)
上面的代码声明并注册接收器,并具有适当的权限.此外,优先级设置为MAX_INT或2147483647.
我的设备是Nexus 6P,安装了默认的Messenger应用程序(我也尝试过环聊).该应用程序仍然不显示我的祝酒词.尝试使用较旧的三星设备后,正确打印了祝酒词.
优先问题
我在6P上安装了一个名为Manifest Viewer的应用程序,它允许我查看设备上安装的应用程序的manifest.xml.我检查了Messenger和Hangouts的清单,作为SMS标签的接收者,发现它们都指定了2147483647的优先级.看起来这两个信使应用程序最大优先级,一旦他们消费了消息,他们不允许其他应用程序进行干预.请注意,这些是Google应用程序的库存,而不是第三方.
在这一点上,我很困惑:
非常感谢
最近使用新功能"禁用其他消息通知"更新了SMS.该功能使得收听传入SMS广播的其他应用程序不会触发.例如,我的应用程序Shady SMS监听传入的SMS广播以发送通知并实际提取和保存SMS消息.
当启用Go SMS中的这一新功能时,Shady不会发送通知或保存最终根本不响应传入SMS广播的消息.
Go SMS必须以某种方式取消注册我的应用程序的广播接收器,因为传入的SMS广播不能被中止.我的意图过滤器设置为android:priority ="0".
有什么想法吗?
嗨,我正在尝试捕获短信内容并在我的应用程序中使用,所以我制作了一个带有权限和清单的 BroadcastReceiver 但是当设备收到短信时,我的代码没有运行,这意味着 BroadcastReceiver 不会触发。我也查了很多这里内外的文章,有一些:
Android 短信接收器结果到主要活动 短信接收器不起作用
这是我的清单的一部分:
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<application.
...
...
<receiver android:name="com.example.android.receiver.SmsReceiver"
android:permission="android.permission.BROADCAST_SMS">
<intent-filter android:priority="2147483647">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
</application>
Run Code Online (Sandbox Code Playgroud)
这是我的接收器
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "SMS Received!", Toast.LENGTH_LONG).show();
}
}
Run Code Online (Sandbox Code Playgroud)
我还尝试在 onCreate() 活动中动态注册接收器,但没有任何改变
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
intentFilter.setPriority(2147483647);
registerReceiver(new SmsReceiver(), intentFilter);
Run Code Online (Sandbox Code Playgroud)
有谁知道问题出在哪里?它应该只是 Toast 收到一条消息,这样我就可以继续工作,但接收器似乎甚至没有开火