我已经实现了由AlarmManager触发的BroadcastReceiver。 AlarmManager在BOOT_COMPLETED上初始化。 所以我必须在清单中声明接收者。 我的问题是,我希望BroadcastReceiver只有当我自己的活动没有在前台(也就是用户不与我的应用程序交互)做某事。 我从远程服务器获取信息,不想通知用户他是否正在我的应用程序中。 到目前为止,我还没有设法find一种方法来确定我的应用程序是否在前台。 有没有办法做这样的事情? ActivityManager告诉我,如果我的应用程序正在运行,而不是它是否在前台。 问题与这里描述的几乎相同: 从BroadcastReceiver通知活动只有在前台 解: 在评估了几个解决scheme后,我想快速勾画出我认为是处理背景/前景中活动的最佳方法。 首选方法是在您的活动的onResume方法中注册一个广播接收器,并注销onPause上的活动。 任何服务或其他背景元素将需要发送广播意图与您的活动将拦截的具体行动。 如果您的活动处于前台,它将有意向接收方注册,并能够直接处理从您的服务发送的意图。 如果它不在前台,它将不会收到意图,但是调用广播的服务将知道没有人拦截它的广播意图,并且能够自己处理这个意图。 例如,它可以发起所需的活动,显示通知等。
我正在尝试在Service启动BroadcastReceiver 。 我想做的是有一个后台运行的service去收集传入的短信,并logging来电。 我认为最好的方法就是运行一个可以编录目录的广播接收器。 我怎么去做这个? 我已经有了我的服务了。
更新 – 2013年5月9日 *我尝试在广播接收器的onReceive方法中实现Toast,因为Toast是Android的本地组件,但它也不会在Android 4.1(Jelly Bean)中显示。 我的想法是在广播接收机的onReceive方法中实现Toast,然后根据我们的需要改变它的devise并调整它的显示持续时间。 但还有一个问题是, findViewById在广播接收器中不起作用,所以我认为我们必须编程一个LinearLayout来定制Toast。 更新 – 奖金后,我还没有得到确切的东西,我正在寻找,但我会回到所有; 我正在努力。 无论如何,这个代码适用于大多数Android手机。 如果有人打算用它来解决这个问题,请写在这里,让大家都能从中受益。 感谢您的答复。 我正在开发一个广播接收器,用于在Android中接听来电,并且接收来电,我想在本地来电屏幕上popup一个popup窗口。 我完成了这个代码。 但现在的问题是,在Android 4.1(Jelly Bean)API级别17中,当手机响起时, PHONE_STATE将作为OFF HOOK ,如果我正在调用某个活动,则会被调用,但其下的代码不会得到执行。 我列出的代码: 我的广播接收器 package com.example.popwindowonincomingcallscreen; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.telephony.TelephonyManager; import android.util.Log; public class IncomingBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) […]
我已经在这里寻找类似的问题,但由于某种原因,我的BroadcastReceiver永远不会收到android.intent.action.BOOT_COMPLETED Intent。 这是我的(相对)Android.Manifest文件: <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission> <receiver android:name=".BootReceiver" android:enabled="true" android:exported="true" android:label="BootReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"></action> </intent-filter> </receiver> 这是实际的接收器。 public class BootReceiver extends BroadcastReceiver { private static final String TAG="BootReceiver"; @Override public void onReceive(Context context,Intent intent){ try{ context.startService(new Intent(context,ConnectivityListener.class)); Log.i(TAG,"Starting Service ConnectivityListener"); }catch(Exception e){ Log.e(TAG,e.toString()); } } } 谢谢! 任何帮助是极大的赞赏
我尝试使用此PackageManager方法启用和禁用广播接收器: setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); 广播接收机在清单中注册。 接收器工作正常,但当我尝试禁用它,它仍然收到广播消息。 当我通过“android:enabled =”false“”禁用清单中的接收器时,接收器不会收到任何东西,但我无法启用它。 我从服务内部调用该方法。 PackageManager pm = getApplicationContext().getPackageManager(); ComponentName componentName = new ComponentName("com.app", ".broadcast_receivers.OnNetworkChangedReceiver"); pm.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); Android清单: <receiver android:name=".broadcast_receivers.OnNetworkChangedReceiver" android:enabled="true"> <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE"/> </intent-filter> </receiver> 收件人 public class OnNetworkChangedReceiver extends BroadcastReceiver { private static final String TAG = "OnNetworkChangedReceiver"; @Override public void onReceive(Context context, Intent intent) { Log.d(TAG, "in […]
我试图检测一个新的应用程序正在安装,但只有当我的应用程序正在运行。 我设法通过制作一个BroadcastReceiver并在AndroidManifest文件中激活它来检测应用程序的安装,但即使我的应用程序已closures,这也会检测到。 所以这就是为什么我需要手动激活和停用broadcastreveiver。 要做到这一点,我有这样的代码: br = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub Log.i("Enter", "Enters here"); Toast.makeText(context, "App Installed!!!!.", Toast.LENGTH_LONG).show(); } }; IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED); intentFilter.addAction(Intent.ACTION_PACKAGE_INSTALL); registerReceiver(br, intentFilter); 这应该让一个新的应用程序安装时敬酒。 但可悲的是,事实并非如此。 它不会在onReceive方法中input。 任何帮助表示赞赏。
我只是想知道是否有可能在应用程序清单中注册检测屏幕开/关的广播接收器。 我不喜欢可编程方法的原因是它需要应用程序正在运行才能检测到这样的事情,而:“当在意图中的情况下,具有在清单中注册的广播接收器的应用程序不必运行广播为接收器执行“(来源:专业Android 2应用程序开发书) 我的应用程序实际上是一个锁屏应用程序,它通过使用可编程的方式需要始终运行:S 有没有办法解决它? 我正在清单中尝试以下内容: <receiver android:name=".MyBroadCastReciever"> <intent-filter> <action android:name="android.intent.action.SCREEN_OFF"/> <action android:name="android.intent.action.SCREEN_ON"/> </intent-filter> </receiver> 和简单的MyBroadCastReciever类: public class MyBroadCastReciever extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { Log.i("Check","Screen went OFF"); Toast.makeText(context, "screen OFF",Toast.LENGTH_LONG).show(); } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { Log.i("Check","Screen went ON"); Toast.makeText(context, "screen ON",Toast.LENGTH_LONG).show(); } } }
从Stack Exchange和其他地方所见过的所有东西,我已经正确设置了一切,以便在Android OS引导时启动IntentService。 不幸的是,它不是开机启动,我没有得到任何错误。 也许专家可以帮助… performance: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.phx.batterylogger" android:versionCode="1" android:versionName="1.0" android:installLocation="internalOnly"> <uses-sdk android:minSdkVersion="8" /> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.BATTERY_STATS" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <service android:name=".BatteryLogger"/> <receiver android:name=".StartupIntentReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver> </application> </manifest> BroadcastReceiver启动: package com.phx.batterylogger; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class StartupIntentReceiver extends […]
有一个Android Intent ACTION_XXX在Internet连接可用时通知我? 我将实例化一个BroadcastReceiver ,通知我的应用程序,当用户启用互联网连接(通过WiFi,通过GSM等…) 任何人都可以帮我吗?
我正在监视传入的短信。 我的应用程序与BroadcastReceiver完美配合。 然而,它是从一个活动工作,并希望保持BroadcastReceiver运行的时间(而不是只是当我的活动正在运行)。 我怎样才能做到这一点? 我已经查看了BroadcastReceiver的生命周期,但文档中提到的所有内容都是生命周期仅限于onReceive方法,而不是保持BroadcastReceiver检查传入SMS的生命周期。 我怎样才能使这个持久? 谢谢