Articles of broadcastreceiver

Android BroadcastReceiver无法接收任何广播事件

我创建了一个BroadcastReceiver来检测SDCard挂载和卸载事件,但是,我根本无法接收任何事件:这里是AndroidManifest.xml: <!– or –> 和SDCardMountReceiver类: public class SDCardBroadcastReceiver extends BroadcastReceiver { public SDCardBroadcastReceiver() { super(); System.err.println(“constructor”); } public void onReceive(Context context, Intent intent) { Log.d(“SDCardBroadCastReceiver”, “receive ” + intent.getAction()); System.err.println(“jonathan receive ” + intent.getAction()); } }

没有这样的方法getITelephony断开Call

我想断开ICS的拨出电话。 我的问题首先是我没有在姜饼中获得IC中的广播它工作正常并且阻止了呼叫,但在ICS中它不是广播。 对于BroadCast我创建了一个服务,并且我在ICS中获得了PHONE_STATE ,但是当我尝试断开呼叫时,我收到错误 NO such method name ‘getITelephony’ 在ICS呼叫中没有断开连接。 我正在使用以下代码断开使用BroadCast的呼叫… try{ TelephonyManager manager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE); Class c = Class.forName(manager.getClass().getName()); Method m = c.getDeclaredMethod(“getITelephony”); m.setAccessible(true); ITelephony telephony = (ITelephony)m.invoke(manager); telephony.endCall(); } catch(Exception e){ Log.d(“”,e.getMessage()); } AndroidMaifest.xml PhonecallStateBroadcastReceiver.java 与packgename package com.android.internal.telephony; ITelephony.aidl interface ITelephony { boolean endCall(); void answerRingingCall(); void silenceRinger(); }

LocationManager.PROVIDERS_CHANGED_ACTION不适用于API 26及更高版本

我正在使用以下代码来获取位置开/关事件。 我正在开发基于地理围栏的应用程序。 基于仅在需要时重新注册地理围栏,我们必须在应用程序收到GEOFENCE_NOT_AVAILABLE警报后重新注册地理围栏。 这通常发生在禁用NLP(Android的网络位置提供程序)之后。 通过使用此广播接收器,我在启用Android的网络位置提供程序时重新注册了地理围栏。 但是从API级别26开始,这个广播接收器永远不会工作。 请参阅后台执行限制 。 那么如何在API 26及更高版本中实现相同的任务呢? 注意 :即使app在后台,我也需要重新注册地理围栏。

如何在android中识别来电和拨出电话

如何分别在android中获取来电和拨出电话的事件。 实际上我正在尝试开发一个在来电时打开的应用程序,如果数字存在于数据库中并且工作正常。 但是,如果我从设备呼叫(拨出电话),如果数字存在于数据库中仍然打开我的应用程序。 我想限制在拨打电话时打开我的应用程序。 我的清单包含我收到这样的来电: IncomingCallReceiver: MyPhoneStateListener phoneListener=new MyPhoneStateListener(context); TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); telephony.listen(phoneListener,PhoneStateListener.LISTEN_CALL_STATE); MyPhoneStateListener: public void onCallStateChanged(int state,String incomingNumber){ switch(state) { case TelephonyManager.CALL_STATE_IDLE: Log.d(“DEBUG”, “IDLE”); break; case TelephonyManager.CALL_STATE_OFFHOOK: Log.d(“DEBUG”, “OFFHOOK”); Intent i = new Intent(context, MyMainActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); break; case TelephonyManager.CALL_STATE_RINGING: Log.d(“DEBUG”, “RINGING”); break; } } 任何人都可以帮我区分来电和来电,所以我会处理这个事件。 提前致谢。

如何获得图库应用可见的每个新图像的通知?

背景 当用户下载新图像或使用相机捕获图像时,图库应用程序将更新以显示新图像。 我需要在每个新图像创建后立即得到通知,无论它是如何创建的(相机,浏览器……),就像图库应用程序显示的那样。 问题 事实certificate,有一个mediaScanner Android组件负责扫描所有types的媒体文件,当它完成时,它应该发送一个意图“ MEDIA_SCANNER_FINISHED ”(如本例所示)。 所以我添加了下一个代码,希望每次用户从相机应用程序拍摄照片时都会显示吐司: 表现: … … java文件: package com.example.newgalleryimagereceivertest; … public class MediaScannerBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(final Context context, final Intent intent) { android.util.Log.d(“AppLog”, “gallery has new images”); } 出于某种原因,此代码不起作用…… 这个问题 代码有什么问题? 拍摄照片后是否会调用broadcastReceiver? 这样做的正确方法是什么? 我是否真的需要使用contentObserver并监视其更改(使用类似的东西),并保持应用程序正常运行? 我真的希望不是……

广播接收器调用两次

尝试检查我的应用程序中的Internet连接。 我的清单有一个代码: 并且有一个句柄类: public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if(intent.getAction() != null && intent.getAction().equals(“android.net.conn.CONNECTIVITY_CHANGE”)); { Log.d(“myLogs”, “Network connectivity change”); if (intent.getExtras() != null) { NetworkInfo ni = (NetworkInfo) intent.getExtras().get( ConnectivityManager.EXTRA_NETWORK_INFO); if (ni != null && ni.getState() == NetworkInfo.State.CONNECTED) { Log.i(“myLogs”, “Network ” + ni.getTypeName() + ” connected”); […]

Android应用程序架构 – 在哪里放置REST API调用代码?

我想更好地了解如何构建Android应用程序,其中活动会触发API调用(例如)。 我目前通过将API调用放入AsyncTask子类来实现它,向它传递对活动的引用,以便它可以更新onPostExecute中的UI。 但我的直觉是,这会产生过度耦合的代码。 我想知道是否应该将这样的API调用放入服务中 ,并使用BroadcastReceiver来更新活动。 你怎么说,AsyncTask或BroadcastReceiver?

如何将parameter passing给BroadcastReceiver的子类?

我按下时设法让我的应用程序识别我的耳机按钮 ,但其中一个按钮需要调用MyCustomActivity中的方法。 问题是onReceive的第一个参数是一个不能强制转换为Activity的Context,使用MyCustomActivity的内部类 在Android 4.1中不起作用,除非它是静态的(它具有无法访问MyCustomActivity方法的相同问题)。 因此,我唯一的选择(为了支持2.x和4.1)是将活动作为parameter passing给RemoteControlReceiver 。 但是,如何实现它的唯一方法是通过: private ComponentName mRemoteControlReceiver = new ComponentName(this, RemoteControlReceiver.class); 哪个不接受任何其他参数? 任何想法如何解决这个限制? 注意:如果我尝试将RemoteControlReceiver定义为具有带参数的构造函数, RemoteControlReceiver收到以下exception: E/AndroidRuntime(2836): java.lang.RuntimeException: Unable to instantiate receiver com.example.RemoteControlReceiver: java.lang.InstantiationException: can’t instantiate class com.example.RemoteControlReceiver; no empty constructor Caused by: E/AndroidRuntime(2836): Caused by: java.lang.InstantiationException: can’t instantiate class com.example.RemoteControlReceiver; no empty constructor E/AndroidRuntime(2836): at java.lang.Class.newInstanceImpl(Native Method) E/AndroidRuntime(2836): at java.lang.Class.newInstance(Class.java:1319) […]

是否可以在结束预付费电话后从对话中读取通话费用历史记录?

是否有可能处理预付费用户收到的通话费对话中显示的数据。 我希望在我的sqlite数据库中保存所有余额减少和呼叫持续时间。

将意图额外传递给android广播接收器

我创建了一个AlarmReceiver类,用作警报的广播接收器。 问题是我需要从将类警报设置到广播接收器类的类中发送一些值。 setAlarmManager.java Intent i = new Intent(mContext, AlarmReceiver.class); i.putExtra(KEY_ROWID, (long)taskId); PendingIntent pi = PendingIntent.getBroadcast(mContext,taskId_int,i,PendingIntent.FLAG_ONE_SHOT); mAlarmManager.set(AlarmManager.RTC_WAKEUP, when.getTimeInMillis(), pi); 我需要在alarmreceiver类中从intent获取KEY_ROWID。 我怎样才能做到这一点? AlarmReceiver类如下所示。 public class AlarmReceiver extends BroadcastReceiver { public static final String ALARM_ALERT_ACTION =”com.android.alarmclock.ALARM_ALERT”; public static final String ALARM_INTENT_EXTRA = “intent.extra.alarm”; @Override public void onReceive(Context context, Intent intent) { //Here I need the values from intent […]