相关疑难解决方法(0)

Boot BroadcastReceiver无法在小米设备上运行

我有一个跟随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

10
推荐指数
1
解决办法
3181
查看次数

Redmi手机没有询问短信权限,因此没有阅读短信

以下是我的代码:

<!-- 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

10
推荐指数
1
解决办法
1630
查看次数

AndroidMainfest - intent-filter应该有多个动作吗?

我当前对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)

android android-manifest

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

不允许进程自动启动引导完整的广播接收器

我从 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)

我尝试了很多方法,但都不起作用。我知道还有其他问题。谢谢。

java android

6
推荐指数
1
解决办法
3857
查看次数