android - 没有“RECEIVE_BOOT_COMPLETED”,绑定 Jar 中的服务不会出现
问题描述
我有一个应用程序使用我通过可绑定 Jar 添加的服务。
当前状态:
这个 Jar 有一个自己的 Manifest(见下文),当我不碰这个 Manifest 上的任何东西时,一切都会正常工作。
问题:
这个 Jar 让部署到设备总是它的启动器 AppIcon 在设备上。所以我的应用程序最后留下了两个启动器图标,一个是所需的,另一个来自 Jar。
我的方法是从清单中删除以下部分:
android:theme="@style/AppTheme">
<activity
android:name=".ScanDemoActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
这样做应用程序在 BootUp 上崩溃并出现错误:未找到 BootReceiver ...
删除接下来的几行:
<receiver android:name="com.company.scandemo.BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<category android:name="android.intent.category.HOME"/>
</intent-filter>
</receiver>
导致在 bootUp 上正确启动,但服务没有出现在BOOT_COMPLETED上,当我通过启动器图标启动应用程序时,一切正常。
希望的行为:
我希望主应用程序只留下一个启动图标并在启动时正确启动
这是清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.company.scandemo"
android:versionCode="1"
android:versionName="2.2" >
<uses-sdk
android:minSdkVersion="17"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name=".ScanDemoActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name="com.company.scandemo.FloatingService" />
<receiver android:name="com.company.scandemo.BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<category android:name="android.intent.category.HOME"/>
</intent-filter>
</receiver>
</application>
</manifest>
解决方案
推荐阅读
- php - PHP for 循环仅每两行有效
- statistics - 如何在 Julia 中操作数据框时使用条件
- reactjs - 使用带有 React Js 的“Unstated”从 API 端点获取数据
- authentication - 使用 azure 广告身份验证时抛出异常 AADSTS50011
- mysql - phpmyadmin 中使用少量 INNER JOIN 的 504 超时网关问题
- ios - 找不到目标“arm64-apple-ios-simulator”的模块“Alamofire”;找到:x86_64-apple-ios-simulator,x86_64
- azure - 微软在 azure devops 中托管的 ubuntu 代理中是否允许使用端口 9000
- oracle - 条件不匹配时需要批量更新
- coldfusion - Coldfusion 2018 vs 11,Centos 6 vs 7,符号链接的处理
- spring-security - 当服务启用spring security bcryptpasswordencoder时spring boot admin 401