Articles of android broadcast

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" > […]

删除图像文件后刷新图库?

我总是为我的问题find以下答案: context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory()))); 但它不工作在我的系统(Nexus4的Android 4. …) 我可以创build一个文件,并将其添加到媒体数据库whith这个代码 Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); Uri contentUri = Uri.fromFile(file); mediaScanIntent.setData(contentUri); context.sendBroadcast(mediaScanIntent); 其中“文件”是我想要添加的新图像文件。 删除文件后,我尝试刷新画廊 Intent intent = new Intent(Intent.ACTION_MEDIA_MOUNTED); Uri contentUri = Uri.parse("file://" + Environment.getExternalStorageDirectory()); intent.setData(contentUri); context.sendBroadcast(intent); 要么 context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory()))); 但在Galery中仍然有空的占位符。 我不知道为什么?… 为了安全起见,我在AndroidManifest.xml中添加了Activity <intent-filter> <action android:name="android.intent.action.MEDIA_MOUNTED" /> <data android:scheme="file" /> </intent-filter> 但结果是一样的。 任何想法来解决这个问题?

使用Greenrobot Eventbusreplace广播接收机是否可以触发基于事件的function和数据从服务到活动的传输?

我已经实现了一个服务,在这里我处理状态变化(连接,断开连接,onServiceDiscoverd,onCharacteristicChange等),并通过gatt服务器从另一个设备接收数据。 我的问题是,使用Greenrobot Eventbusreplace服务和活动之间的广播接收器可以有效地处理事件吗?

在Android KitKat中取消SMS意图

我目前正在开发一个应用程序,需要处理短信,只有当它是一个应用程序预期的SMS(与Whatsapp注册时的行为相同)。 我想中止短信意图,因为它不会出现在短信框中。 我的问题是:我知道Google改变了很多关于在KitKat中的短信行为,现在,即使我的短信很好地被我的应用程序parsing,短信也出现在SMSBox,即使我打电话this.abortBroadcast(); 在我的短信广播接收器。 那么有没有办法避免SMS短信中出现这些短信,而无需开发完整的短信应用? 有关信息,该广播接收器的清单文件中的优先级还不到1000(我也尝试过使用MAX整数)。

如何在Android的服务类中实现BroadcastReceiver?

我需要在我创build的Service类中实现BroadcastReceiver: public class MyService extends Service 在这个类中,当用户按下实现sendBroadcas()的MyActivity类中的button时,我必须通过使用Thread-Sleep实现“下载模拟”。 我不能将Service类扩展到BroadcastReceiver,因为它已经扩展到Service。 任何人都可以帮我弄清楚如何实现这个机制? 谢谢

dynamic注册vs BroadcastReceiver的静态注册

我们所有人都知道我们注册了两种types的BroadcastReceiver 1)Static Registration 2)Dynamic Registration 但我的疑问是,当我们需要使用Static ,当我们需要使用Dynamic ?

你可以使用本地广播的未决意图?

我有兴趣使用本地广播的未决意图。 为了使自己清楚,我使用以下注册接收器和发送广播: android.support.v4.content.LocalBroadcastManager 。 我有一个本地广播接收机在一个有效的服务。 我正尝试从包含可点击的项目的自定义通知布局发送本地广播。 本地广播接收器 – 只是接收简单的动作意图。 我正在尝试这样的事情无济于事: Intent backintent = new Intent("GOTO_START_BROADCAST"); PendingIntent backIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, backintent, 0); RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.custom_notification); contentView.setOnClickPendingIntent(R.id.imageView1, backIntent);

如何检查onStop()中的屏幕开/关状态?

如此处所述,当屏幕熄灭时,将onStop()当前Activity的onStop() 。 当我的Activity的onStop()被调用时,我需要检查屏幕的开/关状态。 所以我已经为这些动作( ACTION_SCREEN_ON和ACTION_SCREEN_OFF )注册了一个BroadcastReceiver来logging当前的开/关状态(并且它们正常工作,我已经logging了!)。 但是当我closures屏幕并检查onStop的开/关状态时,表示屏幕已开启。 为什么? 我认为接收器必须在onStop被调用之前收到ACTION_SCREEN_OFF ,那么怎么回事?