我有一个跟随BroadcastReceiver,应该在启动完成后运行.我已经在我的小米设备(Redmi 1s)上进行了测试,它没有运行,而在像三星这样的其他设备上它按预期运行.
public class DeviceBootReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
Toast.makeText(context, "I am Running", Toast.LENGTH_SHORT).show();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我已在Manifest中设置了权限.
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
Run Code Online (Sandbox Code Playgroud)
以下是我的广播接收器:
<receiver android:name=".receiver.DeviceBootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud) android broadcastreceiver android-permissions android-reboot android-broadcastreceiver
以下是我的代码:
<!-- Data SMS Receiver -->
<receiver android:name=".otp.OTPReceiver" android:enabled="true" android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.DATA_SMS_RECEIVED" />
<data android:scheme="sms" />
<data android:port="9027" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
otp.OTPReceiver是相关的BroadcastReceiver
这适用于除Redmi设备之外的所有其他手机.在Redmi手机中,您必须在权限应用程序中手动启用自动启动和其他权限(此应用程序处理Redmi手机中的权限).在安装时询问权限,我看到Facebook,whatsapp等.想知道如何做到这一点.
我看到了这样的问题该和这个被问同样的事情,但都无人接听.我尝试添加android:enabled="true",android:exported="true"到接收XML片段就像提到这里.但这些都没有奏效.
编辑:我正在使用data sms(也称为port sms).我也用正常的短信验证了,Redmi手机上也存在问题
permissions sms android android-permissions redmi-permission
我当前对MainActivity的intent-filter看起来像这样
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" />
</intent-filter>
Run Code Online (Sandbox Code Playgroud)
请注意,有2个操作节点.它是否正确?或者每个intent-filter应该只有一个动作节点?
另外,DEFAULT类别的目的是什么?
<category android:name="android.intent.category.DEFAULT" />
Run Code Online (Sandbox Code Playgroud) 我从 logcat 收到以下消息:
08-16 11:34:36.257: W/BroadcastQueue(1040):
Unable to launch app com.abc.xyz/10192 for broadcast Intent
{ act=android.intent.action.BOOT_COMPLETED flg=0x8000010 (has extras) }: process is not permitted to autostart
Run Code Online (Sandbox Code Playgroud)
我的manifest.xml看起来像这样:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<receiver android:name="com.abc.xyz.BootComplete" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
我尝试了很多方法,但都不起作用。我知道还有其他问题。谢谢。