N1启动后,我的BroadcastReceiver没有收到BOOT

编程入门 行业动态 更新时间:2024-10-25 20:24:58
本文介绍了N1启动后,我的BroadcastReceiver没有收到BOOT_COMPLETED意图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我无法使用BOOT_COMPLETED意图调用我的BroadcastReceiver onReceive方法.

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="schemas.android/apk/res/android" package="com.jerrellmardis.umbrella" android:versionCode="4" android:versionName="1.0.3"> <application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar"> <activity android:name=".activities.Umbrella" android:screenOrientation="portrait"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".activities.Preferences" android:label="@string/app_name" android:screenOrientation="portrait" /> <receiver android:name="com.jerrellmardis.umbrella.receiver.WeatherStartupReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> <service android:name=".service.WeatherUpdateService"> <intent-filter> <action android:name="com.jerrellmardis.umbrella.service.WeatherUpdateService" /> </intent-filter> </service> </application> <uses-sdk android:minSdkVersion="3" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> </manifest>

WeatherStartupReceiver.java

package com.jerrellmardis.umbrella.receiver; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.provider.Contacts.People; import android.util.Log; import com.jerrellmardis.umbrella.R; public class WeatherStartupReceiver extends BroadcastReceiver { private NotificationManager mNotificationManager; private int SIMPLE_NOTFICATION_ID; @Override public void onReceive(Context context, Intent intent) { // Do something interesting here... } }

解决方案

所有接收BOOT_COMPLETED广播的应用程序都必须安装在内部存储器上,因为Android在外部存储器安装到设备上之前先传送了ACTION_BOOT_COMPLETED广播. .

要确保将应用程序安装在内部存储器中,只需不需要声明android:installLocation清单属性.

另一个选项是在清单部分中设置以下内容:android:installLocation="internalOnly"

您可以在此处找到有关它的更多信息./p>

I am unable to get my BroadcastReceiver onReceive method called using the BOOT_COMPLETED intent.

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="schemas.android/apk/res/android" package="com.jerrellmardis.umbrella" android:versionCode="4" android:versionName="1.0.3"> <application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@android:style/Theme.NoTitleBar"> <activity android:name=".activities.Umbrella" android:screenOrientation="portrait"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".activities.Preferences" android:label="@string/app_name" android:screenOrientation="portrait" /> <receiver android:name="com.jerrellmardis.umbrella.receiver.WeatherStartupReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> <service android:name=".service.WeatherUpdateService"> <intent-filter> <action android:name="com.jerrellmardis.umbrella.service.WeatherUpdateService" /> </intent-filter> </service> </application> <uses-sdk android:minSdkVersion="3" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> </manifest>

WeatherStartupReceiver.java

package com.jerrellmardis.umbrella.receiver; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.provider.Contacts.People; import android.util.Log; import com.jerrellmardis.umbrella.R; public class WeatherStartupReceiver extends BroadcastReceiver { private NotificationManager mNotificationManager; private int SIMPLE_NOTFICATION_ID; @Override public void onReceive(Context context, Intent intent) { // Do something interesting here... } }

解决方案

All the applications that receive the BOOT_COMPLETED broadcast must be installed on the internal storage because Android delivers ACTION_BOOT_COMPLETED broadcast before the external storage is mounted to the device.

To ensure that your application will be installed on the internal memory you just need NOT to declare the android:installLocation manifest attribute.

Another option is to set the following in the manifest section: android:installLocation="internalOnly"

You can find more information about it here.

更多推荐

N1启动后,我的BroadcastReceiver没有收到BOOT

本文发布于:2023-11-27 10:31:49,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1637710.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:BroadcastReceiver   BOOT

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!