相关疑难解决方法(0)

为广播接收者提供最高优先级的整数值是多少?

为广播接收机提供最高优先级的整数值是多少?

<intent-filter android:priority="1">
  <action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)

android broadcastreceiver

14
推荐指数
3
解决办法
1万
查看次数

BroadcastReceiver SMS_Received无法在新设备上运行

在经历了几个资源和问题后,我仍然面临检测传入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 android broadcastreceiver android-permissions

11
推荐指数
1
解决办法
1万
查看次数

在另一个应用程序中抑制/阻止BroadcastReceiver

最近使用新功能"禁用其他消息通知"更新了SMS.该功能使得收听传入SMS广播的其他应用程序不会触发.例如,我的应用程序Shady SMS监听传入的SMS广播以发送通知并实际提取和保存SMS消息.

当启用Go SMS中的这一新功能时,Shady不会发送通知或保存最终根本不响应传入SMS广播的消息.

Go SMS必须以某种方式取消注册我的应用程序的广播接收器,因为传入的SMS广播不能被中止.我的意图过滤器设置为android:priority ="0".

有什么想法吗?

sms android broadcastreceiver

9
推荐指数
2
解决办法
1万
查看次数

Android 短信广播接收器不起作用

嗨,我正在尝试捕获短信内容并在我的应用程序中使用,所以我制作了一个带有权限和清单的 BroadcastReceiver 但是当设备收到短信时,我的代码没有运行,这意味着 BroadcastReceiver 不会触发。我也查了很多这里内外的文章,有一些:

Android 短信接收器结果到主要活动 短信接收器不起作用

Android 短信接收器不工作

广播接收器不适用于 SMS

这是我的清单的一部分:

<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 收到一条消息,这样我就可以继续工作,但接收器似乎甚至没有开火

java sms android intentfilter broadcastreceiver

8
推荐指数
1
解决办法
1163
查看次数