Articles of android broadcast

如何区分Android中编程连接的蓝牙设备?

无论是蓝牙耳机还是手机? 如何在android代码中区分bluetooth headset和bluetooth enabled android设备。 我正在开发一个小应用程序,因为我有一个通过蓝牙阻止数据传输的function,但它需要通过蓝牙耳机进行通信。 我提到的例子和代码,他们build议我只配对/取消配对蓝牙设备。 Android:如何以编程方式配对蓝牙设备? or else 获取所有连接的设备。 在Android中,如何获取连接的蓝牙设备的configuration文件? 是否可以在与设备连接types有关的设备中获得任何广播消息? 请帮助我区分连接的蓝牙设备为耳机/ Android设备(手机)等。 先谢谢你。

如何让应用程序的广播接收器保持监听,而不需要在后台运行服务

我正在试图制作一个android应用程序,它可以侦听到wifi更改广播并执行一些操作。 但是问题在于当进程被杀时它不能工作。 我发现这个问题,说没有一个活动就不行 如何创build没有活动/服务的BroadcastReceiver? 所以这不是一个select。 因此,我创build了一个空的活动。 我不想创build一个在后台运行的服务。 我怎样才能使我的应用程序保持听取,甚至当它被杀死。 我已经在清单中注册了广播。 <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name="com.background.service.BroadCastReceiver"> <intent-filter> <action android:name="android.net.wifi.WIFI_STATE_CHANGED"/> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> 这是我的class public class BroadCastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //do some action } }

无法取消蓝牙发现过程

我需要在周围地区扫描蓝牙设备6到12秒。 在这段时间之后,我需要停止发现新设备。 以下代码应该: 开始扫描蓝牙设备 打印出任何find的 6秒后,取消所有发现和重复过程 问题是,蓝牙发现永远不会被取消。 在这段代码运行一两分钟之后, onReceive会在同一秒内被调用几十次… public void startTrackingButton(View view) { Log.d("MAIN", "Track button pressed, isTracking: " + !isTracking); if (isTracking) { isTracking = false; } else { isTracking = true; Thread keepScanning = new Thread(new Runnable() { @Override public void run() { while (isTracking) { if (mBluetoothAdapter.isDiscovering()) { Log.d("MAIN", "Cancelling discovery!"); […]

在Broadcast Receiver中访问应用程序类

我想检查广播接收器中的互联网连接; 并将结果(一个布尔标志)设置为一个全局variables,在整个应用程序中使用它,在if条件下; 如果互联网断开连接,请将主要活动中的状态图像视图设置为红色图像,如果连接,则将其设置为绿色。 我跟着这个话题。 但在Broadcast Receiver中没有getApplication() ; 而我应该使用getApplicationContext()来代替。 另一方面, 这个话题: 当在广播接收器中编写代码时,它不是一个上下文,而是在onReceive方法中给定一个上下文,只能调用getApplicationContext()。 这也意味着您不能保证在BroadcastReceiver中访问您的应用程序。 有什么担忧? 如何在广播Receiver中访问我的应用程序类? 有没有更好的解决scheme来检查互联网连接,设置全局variables,并改变我的状态imageview?

android.intent.action.BOOT_COMPLETED Intent在“重新启动”或“重新启动”

Android android.intent.action.BOOT_COMPLETED如果我使用“重新启动”或“重新启动” ,则不会收到意图,但是如果closures设备并且在设备上,则会工作。 有没有办法使这项工作?

BroadcastReceiver屏幕开/关不起作用

我试图使用BroadcastReceiver,但它不工作,请帮我解决这个问题。 MyReceiver.java package com.example.broadcast_receiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub Log.i("[BroadcastReceiver]", "MyReceiver"); if(intent.getAction().equals(Intent.ACTION_SCREEN_ON)){ Log.i("[BroadcastReceiver]", "Screen ON"); } else if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){ Log.i("[BroadcastReceiver]", "Screen OFF"); } } } AndroidManifest.xml中 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.broadcast_receiver" android:versionCode="1" android:versionName="1.0" […]

致命exception:android.app.RemoteServiceException:无法在android.os.Handler.dispatchMessage上传递广播

我在我的android应用程序上使用广播消息(从io.socket我发送广播消息到我的活动页面)。 在一些设备三星SM-G950F和SM-A520F我得到一个错误“ Fatal Exception: android.app.RemoteServiceException: can't deliver broadcast ”。 我在Fabric crashlytics上遇到了这个错误,我也无法重现这个问题。 这是我从Fabric获得的日志, Fatal Exception: android.app.RemoteServiceException: can't deliver broadcast at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1813) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6776) at java.lang.reflect.Method.invoke(Method.java) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)

Android,播放可以分类的数据

我已经实现了一个扩展了NotificationListenerService的类,它可以很好地处理发布的通知。 然后我想要接收statusBarNotification对象并播放它。 我会做以下几点: @Override public void onNotificationPosted(StatusBarNotification statusBarNotification) { Intent intent = new Intent(); intent.putExtra("STATUS_BAR_NOTIFICATION",statusBarNotification); intent.setAction("com.example.NotificationPosted"); sendBroadcast(intent); } 但是当我这样做时,我得到以下错误: 01-05 01:50:14.333 19574-19673/com.example W/NotificationListenerService[NotificationListener]﹕ Error running onNotificationPosted java.lang.RuntimeException: Not allowed to write file descriptors here at android.os.Parcel.nativeAppendFrom(Native Method) at android.os.Parcel.appendFrom(Parcel.java:431) at android.os.Bundle.writeToParcel(Bundle.java:1679) at android.os.Parcel.writeBundle(Parcel.java:636) at android.app.Notification.writeToParcel(Notification.java:962) at android.service.notification.StatusBarNotification.writeToParcel(StatusBarNotification.java:106) at android.os.Parcel.writeParcelable(Parcel.java:1285) at android.os.Parcel.writeValue(Parcel.java:1204) at android.os.Parcel.writeArrayMapInternal(Parcel.java:618) at android.os.Bundle.writeToParcel(Bundle.java:1692) […]

没有Android支持库的LocalBroadcastManager的等价物

在StackOverflow和其他地方有很多例子,使用LocalBroadcastManager类来避免在应用之外广播事件。 但是,该类使用Android支持库,如包名称所示: android.support.v4.content.LocalBroadcastManager 。 在没有使用Android支持库的标准SDK中是否有相当于LocalBroadcastManager的? android.content.Context中的sendBroadcast方法似乎没有这种安全粒度。

通过BroadcastReceiver收听来电,而不需要PhoneStateIntentReceiver或PhoneStateListener

有没有办法通过扩展BroadcastReceiver监听操作系统的广播,而不使用PhoneStateIntentReceiver或PhoneStateListener来监听来电。 也请告诉我什么是清单中的操作和权限。 我已经尝试过如下,但它不是用于传入呼叫,但工作传出 应用程序的唯一一个.java文件如下(应用程序只有一个.java文件和一个清单文件) package com.crsardar.media.audio; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class IncommingCallReceiverCRS extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { Log.e("Chitta : ", "Its working"); } } performance <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.crsardar.media.audio" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <receiver android:name="IncommingCallReceiverCRS" android:enabled="true"> <intent-filter> <!–action android:name="android.intent.action.NEW_OUTGOING_CALL"/–> <action android:name="android.intent.action.ANSWER" > […]