jjzjj

android - 是否可以在 Android 中使用后台服务检查 "Contacts"和 "Messaging"应用程序状态?

coder 2023-12-23 原文

简介

有些人可能知道,新款三星 Galaxy S3 具有一些很酷的运动功能,可用于简化某些“任务”。 对于那些不喜欢的人,here is the link for the explanation

动机

我想编写一个后台服务来充当此Touchwizz 独有的功能集

什么是可能的

根据关于传感器提供者和后台服务的android文档,以及有用的信息found at this link (由@Michal K 提供),可以从后台服务拦截这些传感器事件。即使电池非常昂贵,它仍然是可能的。

我不确定这是可能的

我不确定是否可以使用后台服务或任何其他方式与前台应用程序(无论是“联系人”还是“消息”或 w.e)进行交互。

通过交互,我的意思是,能够做这样的事情,例如:

  1. BGService 拦截“说”电话处于“调用位置”的事件
  2. BGService 检查前台应用程序是“联系人”还是“消息”
  3. 如果是,BGService 检查是否有打开的短信或联系人
  4. 如果有打开的(重点关注的)联系人或短信线程,BgService 会为该联系人(或短信的发件人)启动调用。

这是我试图实现的核心思想,这是否可能,或者应用程序和事件之间的这种集成是唯一可能的,因为它们都 bundle 在一个框架中(在这种情况下是 Touchwizz)?

如果可能,欢迎任何提示。

提前致谢

最佳答案

1.BGService intercepts event "saying" that the phone is in "call position"

您可以使用 TelephonyManager API判断手机状态

2.BGService checks if the foreground app is either "Contacts" or "Messaging"

您可以使用 ActivityManager API确定前台应用程序。有关示例,请参见以下帖子: Determining the current foreground application from a background task or service

3.If it is, BGService checks if there is any opened sms or contact

我不知道是否可以这样做。您将需要一种方法来查询 SMS 或联系人应用程序以找出 View 中关注的内容。 SmsManager API仅提供发送短信的方法。

4.If there is a opened (focused) contact or sms thread, the BgService starts a call for that contact (or sender of the sms).

与#3 相同的答案。

或者,如果您只对短信和联系人应用中的内容更改感兴趣,您可以使用 ContentObserver API 做一些事情。 .

另请查看 ContentProviders 的 API 文档, 和 Content Provider Basics文档。

关于android - 是否可以在 Android 中使用后台服务检查 "Contacts"和 "Messaging"应用程序状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11509465/

有关android - 是否可以在 Android 中使用后台服务检查 "Contacts"和 "Messaging"应用程序状态?的更多相关文章

  1. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  2. ruby - 在 Ruby 程序执行时阻止 Windows 7 PC 进入休眠状态 - 2

    我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0

  3. ruby-on-rails - rails : "missing partial" when calling 'render' in RSpec test - 2

    我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou

  4. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  5. ruby-on-rails - 如何验证 update_all 是否实际在 Rails 中更新 - 2

    给定这段代码defcreate@upgrades=User.update_all(["role=?","upgraded"],:id=>params[:upgrade])redirect_toadmin_upgrades_path,:notice=>"Successfullyupgradeduser."end我如何在该操作中实际验证它们是否已保存或未重定向到适当的页面和消息? 最佳答案 在Rails3中,update_all不返回任何有意义的信息,除了已更新的记录数(这可能取决于您的DBMS是否返回该信息)。http://ar.ru

  6. ruby - 如何指定 Rack 处理程序 - 2

    Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack

  7. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

  8. ruby - 在 Ruby 中编写命令行实用程序 - 2

    我想用ruby​​编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序

  9. ruby - 我可以使用 Ruby 从 CSV 中删除列吗? - 2

    查看Ruby的CSV库的文档,我非常确定这是可能且简单的。我只需要使用Ruby删除CSV文件的前三列,但我没有成功运行它。 最佳答案 csv_table=CSV.read(file_path_in,:headers=>true)csv_table.delete("header_name")csv_table.to_csv#=>ThenewCSVinstringformat检查CSV::Table文档:http://ruby-doc.org/stdlib-1.9.2/libdoc/csv/rdoc/CSV/Table.html

  10. ruby - 检查 "command"的输出应该包含 NilClass 的意外崩溃 - 2

    为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar

随机推荐