BroadcastReceiver是一个响应系统范围广播公告的Android组件。
当应用程序被终止且服务保持活动状态时,如何从广播接收器启动服务。 我的广播接收器: 公共类 NetworkChangeReceiver 扩展 BroadcastReceiver{ @覆盖 公开...
应用程序关闭时,BroadcastReceiver 不会启动活动
所以,今天我已经尝试了至少五个小时来实现这一目标,并且我已经尝试了在任何地方找到的任何解决方案。 我正在编写一个小时钟应用程序,使用 AlarmManager 使应用程序响铃......
有什么方法可以观察我的应用程序的设置更改吗?我的意思是用户可以在“设置”中更改的设置,特别是对于我的应用程序,例如电池优化、背景限制...
有没有办法通过 Android 服务监听音量变化并做出反应? 顺便说一句:即使在播放音乐时,Google 音乐应用程序如何允许用户控制媒体音量...
有人可以告诉我现在在 2024 年是否可以读取手机状态吗,因为我在 2023 年 10 月有一个广播监听器,它会监听正在执行的呼叫,并且一旦呼叫结束,它就会
使用 EncryptedSharedPreferences 时出现 ANR
我的应用程序广播接收器中收到 ANR。 从谷歌控制台登录 - 意图广播 { flg=0x14 cmp=in.medibuddy/.receivers.DailyInitHealthReceiver (有额外内容) } 最近我有
Android 上 BOOT_COMPLETED 和 QUICKBOOT_POWERON 之间的区别
我创建了 BroadcastReceiver 来安排我的服务每 30 秒执行一次。这是我在 AndroidManifest.xml 中的内容: 我创建了 BroadcastReceiver 来安排我的服务每 30 秒执行一次。这就是我在 AndroidManifest.xml 中的内容: <receiver android:name="MyScheduleReceiver" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.QUICKBOOT_POWERON" /> </intent-filter> </receiver> 现在效果很好,但只有在我添加了 QUICKBOOT_POWERON 操作之后。在此之前,我只有 BOOT_COMPLETED,当我在调试时重新启动模拟器或手机时,我的服务将永远不会启动。所以我的问题是这两者之间有什么区别以及何时使用它们? “冷”启动后收到Intent android.intent.action.BOOT_COMPLETED。 “重新启动”或“重新启动”后收到android.intent.action.QUICKBOOT_POWERON意图。 检查这里 这仅在 HTC 设备上需要,以支持其“快速启动”功能 <action android:name="android.intent.action.QUICKBOOT_POWERON" /> 这里是来自官方代码的完整代码 https://android.googlesource.com/platform/packages/apps/StorageManager/+/refs/tags/android-7.1.2_r8/AndroidManifest.xml <receiver android:name=".automatic.AutomaticStorageBroadcastReceiver" android:enabled="@bool/enable_automatic_storage_management"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <!-- This is required on HTC devices to support their "quickboot" feature --> <action android:name="android.intent.action.QUICKBOOT_POWERON" /> </intent-filter> </receiver> enter code here
CannotDeliverBroadcastException 在运行 Android 13 (API 33) 的三星设备上
我们从 Firebase 收到了很多关于此次崩溃的崩溃报告。 致命异常:android.app.RemoteServiceException$CannotDeliverBroadcastException:无法传递广播 在 android.app.
屏幕截图后从 BroadcastReceiver 更新 UI
我需要在截图发生后更新UI。 我尝试以编程方式在 MainActivity.java 的 onResume() 中创建 BroadcastReceiver,但由于某种原因它没有获取屏幕截图。 所以,我
在Kotlin中,如何从前台服务或BroadcastReceiver录制视频?
我的应用程序中有一个正在运行的前台服务和一个广播接收器,我想为想要解锁设备的人录制视频。我的 BroadcastReceiver 有标志“Intent.ACTION_SCREEN_ON...
清单; 清单; <receiver android:name=".services.SpeechBroadcastReceiver" android:exported="true"> <intent-filter> <action android:name="com.example.SPEECH_DETECTED"/> </intent-filter> </receiver> 班级; import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import com.example.assistant.MainActivity class SpeechBroadcastReceiver : BroadcastReceiver() { override fun onReceive(context: Context?, i: Intent?) { println("Gotcha") val intent = Intent(context, MainActivity::class.java) intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK context?.startActivity(intent) } } 打电话; val filter = IntentFilter("com.example.SPEECH_DETECTED") registerReceiver(broadcastReceiver, filter) //broadcastReceiver = SpeechBroadcastReceiver() 我在 onReceive 函数中看不到“Gotcha”消息。我在前台服务上调用它,因此我也尝试在主活动中调用它,但它无法像以前一样工作。怎么了? 根据注释掉的行,registerReceiver()和broadcastReceiver的实例化似乎顺序错误。接收器需要在注册之前实例化。如果此代码可以编译,那么您很可能正在处理与您想象的不同的接收器。
致命异常:MQTT 建议:当接收者未独占注册时,应指定 RECEIVER_EXPORTED 或 RECEIVER_NOT_EXPORTED 之一
致命异常:MQTT 建议: 当接收器没有专门为系统广播注册时,应指定 RECEIVER_EXPORTED 或 RECEIVER_NOT_EXPORTED 之一 我遇到致命异常
应用程序在尝试运行 AlarmManager 和 PendingIntent 时崩溃
我正在尝试运行我的应用程序,包含在 AlarmManager 中使用,但程序由于某种原因崩溃了。 这是具体代码: private void ScheduleNotification(通知通知,int延迟)...
Android 12 targetSDKVersion 31 挑战(广播接收器、待定意图)崩溃问题
以下是我迄今为止在操作系统版本为 Android 12 的手机上运行带有 targetSDKVersion 31 的 Android 应用程序时遇到的挑战 1)应用程序未上传到商店 错误:- 您上传了 A...
我试图在我的应用程序上发现可用的蓝牙设备,但它不起作用,我认为问题出在我的广播接收器上。有人可以告诉我这个广播记录有什么问题吗...
如何从Android BroadcastReceiver开始Flutter处理
要求 我想实现一个 Flutter 应用程序,它是: 在 Android 上由广播操作 ACL_CONNECTED 触发,然后 在 Dart 中处理有关已连接设备的信息 (Flutte...
正如标题所说,我的广播接收器从未被调用过。 我束手无策,我知道有 30.. 千篇关于此的帖子,我发誓我已经阅读了其中的大部分,并尝试了十几件事......
在 Android 13 (MIUI 14) 上,当应用程序未通过带有 USER_PRESENT 的 BroadcastReceiver 运行时,无法启动前台服务
如果应用程序尚未运行,我无法让我的接收器工作(如果它正在运行,则可以正常工作) 我也有同样的问题,意图 USER_UNLOCKED 我设法让接收器工作,当...
如何在我的 VOIP 应用程序中接收蓝牙颈带播放暂停事件? 我在应用程序中实现了下面的广播接收器。 清单文件 如何在我的 VOIP 应用程序中接收蓝牙颈带播放暂停事件? 我在应用程序中实现了下面的广播接收器。 清单文件 <uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <receiver android:name=".MediaButtonReceiver" android:exported="true" android:priority="10000" > <intent-filter > <action android:name="android.intent.action.MEDIA_BUTTON" /> </intent-filter> </receiver> public class MediaButtonReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { android.util.Log.d("TAG", "Bluetooth onPlay: "+intent.getAction()); if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) { KeyEvent event = intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT); if (event != null && event.getAction() == KeyEvent.ACTION_DOWN) { int keyCode = event.getKeyCode(); if (keyCode == KeyEvent.KEYCODE_MEDIA_PLAY || keyCode == KeyEvent.KEYCODE_MEDIA_PAUSE) { // Handle play/pause event } } } } } 并像这样注册到调用活动 MediaButtonReceiver r = new MediaButtonReceiver(); registerReceiver(r, new IntentFilter(Intent.ACTION_MEDIA_BUTTON)); 并且还在应用程序中的广播接收器下面实现了 public class BluetoothHeadsetReceiver extends BroadcastReceiver implements BluetoothProfile.ServiceListener { private static final String TAG = "BluetoothHeadsetReceiver"; private BluetoothHeadset bluetoothHeadset; @Override public void onServiceConnected(int profile, BluetoothProfile proxy) { if (profile == BluetoothProfile.HEADSET) { bluetoothHeadset = (BluetoothHeadset) proxy; Log.d(TAG, "Bluetooth Headset connected"); } } @Override public void onServiceDisconnected(int profile) { if (profile == BluetoothProfile.HEADSET) { bluetoothHeadset = null; Log.d(TAG, "Bluetooth Headset disconnected"); } } @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); Log.d(TAG, "Bluetooth Headset onReceive : "+action); if (BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED.equals(action)) { int state = intent.getIntExtra(BluetoothHeadset.EXTRA_STATE, BluetoothHeadset.STATE_DISCONNECTED); if (state == BluetoothHeadset.STATE_CONNECTED) { Log.d(TAG, "Bluetooth Headset connected"); } else if (state == BluetoothHeadset.STATE_DISCONNECTED) { Log.d(TAG, "Bluetooth Headset disconnected"); } } else if (BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED.equals(action)) { int state = intent.getIntExtra(BluetoothHeadset.EXTRA_STATE, BluetoothHeadset.STATE_AUDIO_DISCONNECTED); if (state == BluetoothHeadset.STATE_AUDIO_CONNECTED) { Log.d(TAG, "Bluetooth Headset audio connected"); // Handle button click events or other actions here } else if (state == BluetoothHeadset.STATE_AUDIO_DISCONNECTED) { Log.d(TAG, "Bluetooth Headset audio disconnected"); } }else{ Log.d(TAG, "Bluetooth Headset onReceive else : "); } } public void register(Context context) { BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (bluetoothAdapter != null) { bluetoothAdapter.getProfileProxy(context, this, BluetoothProfile.HEADSET); IntentFilter filter = new IntentFilter(); filter.addAction(BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED); filter.addAction(BluetoothHeadset.ACTION_AUDIO_STATE_CHANGED); context.registerReceiver(this, filter); } else { Log.e(TAG, "Bluetooth is not supported on this device"); } } public void unregister(Context context) { context.unregisterReceiver(this); if (bluetoothHeadset != null) { BluetoothAdapter.getDefaultAdapter().closeProfileProxy(BluetoothProfile.HEADSET, bluetoothHeadset); } } } 在调用 Activity OnCreate() 方法中注册以下代码。 MediaButtonReceiver r = new MediaButtonReceiver(); registerReceiver(r, new IntentFilter(Intent.ACTION_MEDIA_BUTTON)); if(gc.hasBTPermission(this, ConstantStrings.BLUETOOTH_PERMISSION)) { if (BluetoothManager.getInstance().isBluetoothHeadsetAvailable()) { headsetReceiver = new BluetoothHeadsetReceiver(); headsetReceiver.register(this); BluetoothManager.getInstance().initBluetooth(); } } 但不接收蓝牙耳机播放,暂停点击事件仅接收应用程序中的蓝牙连接和断开事件。 我想基于蓝牙点击事件呼叫接受和挂断呼叫,但不在应用程序中接收事件。 蓝牙 HID 配置文件/服务始终由设备的底层操作系统处理。只需订阅操作系统的关键事件即可。在 Android 中,应用程序可以通过覆盖 MediaSession.Callback.onMediaButtonEvent(Intent) 来覆盖默认行为。在这种情况下,应用程序可以/需要自行处理所有 API 细节。
Android 蓝牙适配器未发出 ACTION_DISCOVERY_FINISHED
我有一个带有广播接收器设置的课程。接收器侦听以下操作: ACTION_FOUND ACTION_DISCOVERY_STARTED ACTION_DISCOVERY_FINISHED 找到并启动的操作将被...