WakefulBroadcastReceiver已被弃用
为了创建一个接收器,我在旧项目中扩展了WakefulBroadcastReceiver.但是现在是deprecated.我现在应该使用哪个Receiver而不是Receiver如何使用新方法转换下面的代码? 这是我的代码: public class TaskFinishReceiver extends WakefulBroadcastReceiver { private PowerManager mPowerManager; private PowerManager.WakeLock mWakeLock; @Override public void onReceive(Context context, Intent intent) { mPowerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); turnOnScr
4 2024-04-03
编程技术问答社区
如何访问BroadcastReceivers中MainActivity(layout)中声明的Switch按钮
我有一项任务,当飞机模式开/关时,我必须更改开关按钮的状态. 我有一个主要活动,我在其中声明开关按钮,我想从Broadcastreceiver类中开/关此状态 接收者 public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { boolean isAirplaneModeOn = intent.getBooleanExtra("state", false); if(isAirplaneModeOn){ What Should i do ? } } } layout_main_activity
2 2024-04-03
编程技术问答社区
在android Oreo中对收到的短信运行服务
我正在开发一个需要在收到SMS时运行一些代码(网络)的应用程序. 在API 25及其较低的情况下,我在清单文件中注册一个隐式receiver,并在扩展BroadcastReceiver的指定类中启动我的服务.在API 26中,您无法在A receiver中注册android.provider.Telephony.SMS_RECEIVED,因为它行不通. 来自Android文档: 注意:如果您的应用程序目标是API级别26或更高,则您无法使用清单来声明隐式广播的接收器(广播不是专门针对您的应用程序的广播),除了一些被免于该限制的隐性广播除外.在大多数情况下,您可以使用计划的作业. 我已经阅读了几篇文章,例如由于我的应用程序的性质,无论应用程序是否正在运行,我都需要收听传入的SMS.如何在API 26+中做到这一点? 编辑 也许 agobInfobuilder doc中的Android doc in Android网站上>可以帮助.它可以监视设备上照片的更改,
2 2024-04-03
编程技术问答社区
安卓下载管理器获取文件名
在我的应用中,您可以下载一些文件.我使用了Android DownloadManager课程进行下载.下载完成后,应该向我展示一条消息,显示文件已下载.问题是,可以同时下载2,3或4个.我的BroadcastReceiver代码看起来像这样: receiver_complete = new BroadcastReceiver(){ @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(DownloadManager.ACTION_DOWNLOAD_COMPLETE) ){ Toast.makeText(MainActivity.this, MainActivity.
2 2024-04-03
编程技术问答社区
如何在Kotlin的Fragment中使用Android AlarmManager?
我似乎无法让AlarmManager在片段中工作.我的接收器的OnReceive()方法永远不会被执行.我认为我可能会以错误的方式使用上下文,但是我也无法在活动内部使用它.我还在我的清单中注册了接收器. myfragment.kt class MyFragment : Fragment() { ... override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) var alarmMgr: AlarmManager? = null lateinit var alarmIntent: PendingIntent alarmMgr = context!!.getSystemService(Context.ALARM_SERVICE) as
0 2024-04-03
编程技术问答社区
拨打秘密代码时启动隐藏的应用程序
我的要求是启动隐藏的应用程序时. mainActivity.java public class MainActivity extends BroadcastReceiver { String dialed_number; @Override public void onReceive(Context context, Intent intent) { dialed_number = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); if(dialed_number.equals("*0*1235#")) { Intent appIntent = new Intent(context, MainActivity.class); appIntent.addFlags(Intent.F
0 2024-04-03
编程技术问答社区
在安卓系统的广播接收器中检测换日事件
我想在Android应用中实现一个功能,该功能在发生日期更改时(00:00 AM)即使我的应用不运行,也会执行特定代码. 解决方案 我可能迟到回答这个问题,但我个人遇到了同样的问题.对于一天的更改,您可以简单地将广播接收器与操作" android.intent.action.date_changed"一起使用,并且每当更改日期时(用户隐式或明确)时,它将触发.我希望这将帮助通过Google到达这里的人. 其他解决方案 要完成 @gaurav-jain答案,在这种情况下,我在这里一个例子,以检测一天是否发生了变化: abstract class DayChangedBroadcastReceiver : BroadcastReceiver() { private var date = Date() private val dateFormat by lazy { SimpleDateFormat("yyMMdd", Locale.getDefault
0 2024-04-03
编程技术问答社区
选项<eceiver>在上一个循环迭代中移动
我要产生一个可以做一些工作的线程.有时我希望该线程在工作完成后死亡,而其他时候我希望它等待更多的工作.为此,我通过Option>.如果Option>是None线程应该死亡,否则应该等待收到更多工作. fn foo(rx: Option>) { thread::spawn(move || { loop { do_some_work(); if let Some(r) = rx { match r.recv() { Ok(x) => {} Err(_) => panic!("Oh no!"), } } else { break; //Di
0 2024-04-02
编程技术问答社区
Boost UDP组播接收器:set_option。请求的地址在其上下文中是无效的
我正在关注Boost的UDP时间服务器教程在这里 .我将这些代码修改为预定义值: short multicast_port = 13; // (in class receiver) 和main(): //if (argc != 3) and the code for argv that follows are commented out receiver r(io_context, boost::asio::ip::make_address("127.0.0.1"), boost::asio::ip::make_address("127.0.0.1")); // 抛出此错误: set_option: The requested address is not valid in its context 我尝试了" 0.0.0.0"和" 127.0.0.1"和其他值.仍然会遇到相同的错误.有人可以帮我弄清楚什么问题吗? 要澄清事物,这是我使用的代码
4 2024-04-02
编程技术问答社区
如何通过蓝牙接收图像
我想通过蓝牙接收图像,并在图像视图中显示该图像.我知道如何将图像从一个活动传递给另一个活动,但我没有如何使用蓝牙接收图像. 解决方案 Android框架通过Android蓝牙API提供了对蓝牙功能的访问.这些API让应用程序无线连接到其他蓝牙设备,启用点对点和多点无线功能. 使用蓝牙API,Android应用程序可以执行以下操作: 扫描其他蓝牙设备 查询配对蓝牙设备的本地蓝牙适配器 建立RFCOMM频道 通过服务发现连接到其他设备 将数据传输到其他设备 管理多个连接 创建一个蓝牙量并连接到它: BluetoothSocket socket = device.createRfcommSocketToServiceRecord(.getUuids()[0].getUuid()); socket.connect(); 收听套接字(从设备获取数据) InputStream inStream = socket.getIn
6 2024-04-01
编程技术问答社区
安卓--蓝牙发现没有找到任何设备
我目前正在开发一个小应用程序,以开始使用蓝牙Android API可以提供的服务. 编辑 - >答案: 似乎是由于特定的Nexus 5设备引起的.似乎他们的蓝牙接收器工作不好.下面的解决方案应适用于其他设备 备注: 我已经在此处阅读了文档: http://developer.android.com/指南/主题/连接/蓝牙.html 以及本教程的以下源代码 http://www.londatiga.net/it/programming/android/how-to-programmatily-scan-or-discover-and-bluetooth-device/ > 我已经完成了几乎所有感兴趣的功能(例如,检查适配器的存在,启用/禁用蓝牙,查询配对的划分,设置适配器可以发现). 问题: 实际上当我启动.ondiscovery()方法时,找不到设备,即使从我的Nexus 5上的设置/蓝牙找到设备. 这是我处理的方式: public
0 2024-04-01
编程技术问答社区
在安卓小程序上获取电池电量
我为Android写了一个小部件,我正在尝试获得电池电量. 我尝试使用 Intent batteryIntent = context.registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); 但是我得到了错误: "不允许注册以接收意图" 为什么? action_battery_changed是一个粘性的意图,我不注册接收器(第一个参数中的null). 任何解决方法? 谢谢. 解决方案 hackbod在评论中给出了解决方案: "使用getApplicationContext().registerReciever()" 其他解决方案 ummmm ...感觉就像一个错误.他们必须太早进行IS-A- BroadcastRecevier检查.您可能需要创建一个证明问题的项目,然后将其发布到解决方法: 步骤#1:创建IntentService 步骤#2
10 2024-02-19
编程技术问答社区
如果onResume()之前没有被调用,onPause()有可能被调用吗?
i在onResume()中注册接收器,并在onPause()方法中取消注册.我在Crashlytics报告中可能会出错: Fatal Exception: java.lang.RuntimeException Unable to pause activity {package-here}: java.lang.IllegalArgumentException: Receiver not registered: Caused by java.lang.IllegalArgumentException Receiver not registered: 它发生在20k安装上3次(3个用户). 如果以前没有调用OnPause(),是否有可能被调用?我认为不是. 解决方案 如果是三星设备,则可以: https://. 其他解决方案 如果您经常打开并关闭应用程序(在1秒内多次),它将发生
在某些设备上,使用 "意向 "发送短信不能添加收件人
我使用下面的代码发送SMS: Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("smsto:" + phoneNumber)); intent.putExtra("address", phoneNumber); intent.putExtra("sms_body", messageBody); intent.setType("vnd.android-dir/mms-sms"); context.startActivity(intent); 我添加了两个带有smsto的uri:并额外地将字符串添加到意图上.它在大多数设备上都可以使用,但是在某些设备上可以使用.其中一种设备是Se Xperia mini.发送SMS以确保在SMS应用中设置收件人时,还可以添加什么? 解决方案 我研究了意图源,似乎设置意图类型删除数据并设置数据删除类型.这就是我发现
2 2024-02-15
编程技术问答社区
将DeviceAdminReceiver的结果传回给调用活动
我的活动(MyActivity.class)执行设置屏幕锁定的方法如下: startActivityForResult(Security.setLockscreen(getBaseContext()), 1001); 然后我的接收器类将更改登录到屏幕锁定,如下: public class MyDeviceAdminReceiver extends DeviceAdminReceiver { @Override public void onPasswordChanged(Context context, Intent intent) { super.onPasswordChanged(context, intent); // pass result back to calling activity intent = new Intent(context, MyActivity.class); int
4 2024-02-12
编程技术问答社区
在Android Studio项目的清单文件中宣布接收器
在我的清单文件中,我为Activity声明两个BroadcastReceiver.到目前为止,当我在调试模式下工作时,接收器在活动块中宣布,一切都很好.由于我的项目接近末尾,我决定建立一个签名的APK.我遇到的问题是Android Studio返回了以下错误: Error:(20) Error: The element must be a direct child of the element [WrongManifestParent] 如果我将接收器块移出活动块,则会生成签名的APK.结果是我在调用接收器时会遇到运行时错误(java.lang.runtimeException:无法实例化接收器...). 如何在调试和发布模式下正确运行我的应用程序? 解决方案 好吧,由于我的接收器类是内级,因此显然无需在清单文件中声明它(而且由于它是内级,当我在我之外宣布它时会产生错误活动块).现在,我已删除了它的声明,签名的AP
36 2024-02-12
编程技术问答社区
为什么我的 "充电状态接收器 "总是返回错误?
我正在尝试检测用户何时在设备中插入(或拔出电源)以充电.在我的接收器中,我确定它是否已插入,我总是会在状态上获得"错误"阅读.这是我的代码: (在清单中): 这是PowerConnectionReceiver类: public class PowerConnectionReceiver extends BroadcastReceiv
4 2024-02-05
编程技术问答社区
从DialogFragment调用registerReceiver
编辑 我添加了这一行: getActivity().registerReceiver(new BroadcastReceiver(){...}, new IntentFilter(SENT)); 现在有一个运行时错误,错误读取: 09-03 04:12:41.856:e/androidruntime(1692):java.lang.illang.illegalstateException:在活动类中找不到方法sendmessage(view)android.view.view.view.ContextThemewrapper,用于OnClick on click onclick on inClick onclick Handler OnClick Handler onClick Handler onClick Handler查看android.widget.imageview with ID'button_send' 我的问题是:为什么要在 android.v
8 2024-02-03
编程技术问答社区
输出后在Honeycomb上不调用BOOT_COMPLETED
我有一个非常奇怪的问题,网站上的任何问题都没有答案或同样的问题. 我有一个接收boot_completed的应用程序. 我确保可以通过将Android:InstallLocation设置为InternalOnly接收意图. 我的Onboot类中有一个日志. 我有两个设备,一个Android 2.2和一个蜂窝. 在Android 2.2上,它可以正常工作,但是蜂窝... 如果我使用Eclipse的"运行"按钮安装了该应用程序,则在平板电脑靴子时调用Onboot. 如果我在导出 *.apk文件后将应用程序安装在蜂窝平板电脑上,则永远不会调用Onboot. 如果我在导出 *.APK文件后将应用程序安装在蜂窝平板电脑上,并在重新启动之前手动启动活动,则称为Onboot. 似乎需要至少启动一次应用程序才能注册一次接收器...这是不正确的,因为应用程序可能没有活动,而Froyo则无法正常工作... 解决方案 假设您使用的是Android 3.1,则可以按预期工
2 2024-02-01
编程技术问答社区
在清单中或在代码中注册接收器是更好的代码实践吗?
我正在写一个简单的广播接收器.我以前在清单和代码中都注册了接收器.出于我的目的,这是一个简单的接收器,不需要做任何奇特的事情. 在这种情况下,有理由选择一种方法而不是另一种方法?在清单中注册接收器是否更有效(执行速度更快)?还是它们基本上是一样的? 我要问的是因为我编写的应用程序需要非常有效,而且我还找不到有关两种方法之间实际区别的良好信息.我正在尝试遵循最佳的编码实践. 欢呼 解决方案 好吧,它们实际上是不同的.您似乎认为它几乎相同.当您在代码中注册接收器时,必须在应用程序销毁时取消注册(实际上,当注册它的Activity或Service时,将被销毁).另一方面,当您在清单中声明它时,即使您不运行,也可以提供可用. 只问自己:两种方法中的哪种最适合您的需求? 其他解决方案 我无法谈论实施一个实施的效率(我的直觉告诉我,这太接近了),但是出于原因,在Cristian的答案中暗示了这一点可能会使您的应用更有效. 如果您在清单中注册,您的广播接收
2 2024-01-31
编程技术问答社区