Articles of android broadcast

服务未收到活动的本地广播

我有一个Activity ,我在本地注册BroadcastReceiver ,如下所示: public class SomeActivity extends Activity{ public static final String PERFORM_SOME_ACTION = “PERFORM_SOME_ACTION”; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.some_activity_layout); ….. ….. IntentFilter filter = new IntentFilter(); filter.addAction(PERFORM_SOME_ACTION); receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // perform some action … } }; registerReceiver(receiver, filter); } ….. […]

在相同片段的不同实例之间进行通信

问题如下。 让我们有3个带片段的标签: 标签1(片段A)。 需要将数据发送到选项卡2。 表2(片段B)。 需要从选项卡1接收数据。 表3(片段B)。 已经包含数据。 如您所见,选项卡3和选项卡2包含相同的片段但不同的实例。 如何将数据(不是通过参数)发送到Tab 2? 我尝试过的: 片段B在创建时通过参数设置唯一ID。 为片段B的两个实例注册相同的Local Broadcast Receiver 使用ID将数据从片段A发送到片段B. 在Fragment B onReceive()检查接收的ID是否等于Fragment的ID 但不幸的是,广播仅被发送到Tab 3。 编辑:更多信息。 这些选项卡使用ViewPager托管在另一个片段中。 这是由于NavigationDrawer组合,其中包含与ViewPager片段和提到的Tabs。

在Android中用户检测锁定屏幕密码不正确

我正在构建一个安全应用程序,我需要知道用户是否提供了错误的密码。 假设用户手机被模式锁定系统锁定,不幸的是用户忘记了模式密码。当用户5次错误模式时,将被罚30秒。 我需要抓住那个点球赛事。 在我的应用程序中,我甚至需要做一些任务(为了用户的安全)。 请帮帮我,

当应用程序未运行时,BroadcastReceiver无法正常工作

在我的清单文件中,我已经声明了接收器。 (如下) 但是,一旦我关闭了我的应用程序,我就无法收到警报和通知。 显然, OnReceive在我的Broadcast receiver调用OnReceive 。 public class OnAlarmReceive extends BroadcastReceiver { @Override public void onReceive(Context context, Intent arg1) { //various stuff } } 在MainActivity中,我的警报管理器类如下所示。 AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); Intent intent = new Intent(“MY_ALARM_NOTIFICATION”); intent.setClass(this, OnAlarmReceive.class); intent.putExtra(“message”, message); PendingIntent pendingIntent = PendingIntent .getBroadcast(MainActivity.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); Calendar timeCal = Calendar.getInstance(); timeCal.set(Calendar.HOUR_OF_DAY, hour); timeCal.set(Calendar.MINUTE, […]

如何使用包名获取应用程序的类别

我有两个或更多具有我指定类别的应用程序 我可以通过以下方式获得所有具有此类别的包裹: final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null); mainIntent.addCategory(“com.myapp.MY_CATEGORY”); final List pkgAppsList =getPackageManager().queryIntentActivities( mainIntent, 0); 现在我想跟踪我的类别应用程序安装并从应用程序中删除所以我已经制作了一个广播接收器,它将给我安装或删除的应用程序的包名称,但我如何使用包名称来确定应用程序的类别以确定是否是我的应用程序。 我可以为指定的类别应用程序制作广播接收器,如果不能,我如何从packagename获取类别。

无法重新安装崩溃的Sony SmartWatch Control

我希望这不是通用的,但我正在为Sony SmartWatch开发一个应用程序。 什么时候我犯了一个错误,比如允许空指针exception。 我无法让我的应用重启。 就像它永远处于崩溃状态一样。 为了使问题更严重,我也停止通过与该应用程序相关的Logcat接收消息。 当我卸载并重新安装应用程序时,它未在手机上的SmartWatch应用程序中列出。 喜欢它不会注册。 这很难解决,因为此时我没有收到任何日志消息。 我唯一能做的就是卸载应用程序。 重启我的手机。 然后重新安装该应用程序。 此时它已恢复正常,我可以再次开始编写代码。 这让我想到了我的问题。 有没有更好的方法来重新注册控件? 这会发生在最终用户身上吗? 如果应用程序崩溃,他们需要卸载,重新启动并安装以恢复? 一些细节(名称已被更改以保护无辜者): 我创建了一个广播接收器,并在我的主要节目中设置它来收听这些广播。 MyExtensionReceiver的代码: public class MyExtensionReceiver extends BroadcastReceiver { public MyExtensionReceiver() { super(); Log.d(“mytag”, “MyExtensionReceiver Loaded”); Dbg.setLogTag(“mytag”); } @Override public void onReceive(Context context, Intent intent) { Log.d(“mytag”, “onReceive: ” + intent.getAction()); intent.setClass(context, MyExtensionReceiver.class); context.startService(intent); } } 即使我的应用程序崩溃,我仍然应该在调用onReceive时收到日志消息。 就像EXTENSION_REGISTER_REQUEST广播永远不会被发送一样。 […]

如何让服务在后台运行

我创建的应用程序会在用户按下电源按钮3次后立即启动活动。 经过一些研究后我发现要做到这一点,首先你需要创建一个服务,启动广播接收器来检查屏幕的开/关状态。 基本上我希望即使应用程序关闭也能运行。 一旦按下电源按钮3次或更多次,它应该开始另一个活动。 如果您知道解决方案,请给我完整的代码或答案的链接。 我以某种方式设法编写此代码,但它无法正常工作: UpdateService.java 这是我使用的服务类: import android.app.Service; import android.content.BroadcastReceiver; import android.content.Intent; import android.content.IntentFilter; import android.os.IBinder; import android.util.Log; import android.widget.Toast; public class UpdateService extends Service { BroadcastReceiver mReceiver; @Override public void onCreate() { super.onCreate(); // register receiver that handles screen on and screen off logic IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); filter.addAction(Intent.ACTION_SCREEN_OFF); mReceiver = […]

后台服务中的Android BLE扫描

我正在尝试制作一款能够扫描某个蓝牙设备作为后台服务的Android应用。 一旦手机在蓝牙设备的特定范围内,通过读取RSSI进行测量,后台服务将启动向用户显示的活动。 如果手机移出蓝牙设备的范围,(在RSSI值超过某个阈值后),应该杀死活动。 以下是后台服务的代码: public class BeaconScanService extends Service implements BluetoothAdapter.LeScanCallback { private Service self = this; public static final String UNLOCK = “unlock”; public static final String STATUS = “status”; public static final String SIGNAL = “signal”; public static final String GET_SIGNAL = “get_signal”; //desired device to find private static final String targetMAC = […]

星巴克在附近商店时如何在Android设备上显示用户界面?

我是一个相当新的Android开发人员。 我注意到的一件事是,当我走近/星巴克店内时,我的Android设备显示以下内容: 题: 当我在商店附近/内部时,这个UI如何自动呈现在我的移动设备上? 此UI是否显示是因为我的手机上安装了星巴克应用程序? 该应用程序是否使用网络广播监听器? 例如:如果在该区域检测到“Google Starbucks”Wi-Fi,该应用程序是否会将UI显示为活动? 或者,星巴克路由器是否向移动设备广播特殊网络数据包以强制移动设备呈现此信息? 如果是这样,这个网络数据包里面有什么? 我也想这样做。

Android OrderedBroadcast在Release Build中不起作用

为什么OrderedBroadcast在应用程序的调试版本中工作但在发布版本中不工作? 我发送以下OrderedBroadcast: context.sendOrderedBroadcast(sendInt, “xxx.xxxx.permission.API”, new BroadcastReceiver() { @SuppressLint(“NewApi”) @Override public void onReceive(Context receivercontext, Intent intent) { Bundle results = getResultExtras(true); if (results.getInt(“Result”, Activity.RESULT_CANCELED) == Activity.RESULT_OK) { Log.d(“DEBUG”, “OK”); } else { Log.e(“DEBUG”, “Failed”); } } }, null, Activity.RESULT_OK, null, null); 两个应用程序在AndroidManifest.xml文件中都具有相应的权限,接收器声明如下: 正如我所提到的,如果发送器和接收器应用程序都在调试版本中运行,那么一切都运行正常但是如果我在发布模式下运行接收器应用程序(没有proguard或任何东西),发送者应用程序只获得RESULT_CANCELLED结果? 这已经困扰了我好几天,所以任何想法都会非常感激。