我刚刚收到环聊 2.0 的更新,安装它并启用 SMS → 开启 SMS。现在我的应用程序在 Android 4.3 下运行,无法再接收短信,即不再调用 SMS_RECEIVED 的 BroadcastReceiver。 :-(
只要我在环聊 2.0 中禁用 Turn on SMS,我的应用就能够再次接收 SMS_RECEIVED Intent 。
广播接收器是这样在 list 中注册的
AndroidManifest.xml
…
<receiver android:name=".SMSReceiver" >
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
…
SMSReceiver.java
public class SMSReceiver extends BroadcastReceiver {
private static final Log LOG = Log.getLog();
@Override
public void onReceive(Context context, Intent intent) {
LOG.d("onReceive");
…
}
}
我已经尝试将接收器的优先级更改为 INT_MAX 或 999,即 highest possible priority as of the intent-filter documentation ,但没有成功。 I know that SMS_RECEIVED intents are send ordered and that high priority apps have the ability to abort the broadcast. 1 但环聊 2.0 似乎不太可能注册具有高优先级的 SMS_RECEIVED 接收器并调用 abortBroadcast() ,因此阻止任何其他应用接收 Intent 。
让我更困惑的是,我的 Pebble 仍然能够接收短信,即使将环聊 2.0 作为默认短信应用程序也是如此。我想知道 Pebble 有什么不同? 我刚刚注意到 Pebble 上的传入 SMS 通知不再是 Pebble 应用收到的新 SMS 通知,而是由以下原因引起的“新环聊消息”通知环聊接收传入的短信。因此,Pebble 应用程序也无法接收带有 SMS_RECEIVED 的传入短信。
附带说明,与此问题无关,因为我仍在使用 Android 4.3(但我的应用程序针对 SDK 级别 19,Android 4.4 以防万一)Google 的 Android 开发人员博客文章关于 new SMS API in Kitkat ,表示仅使用 SMS_RECEIVED 的应用程序不会发生任何变化,并且不要尝试将 SMS 写入 SMS Provider。
1 我一直认为 SMS_RECEIVED 广播是可以中止的。但是 Android 4.4 APIs site说一些不同的东西:“……当一条新的 SMS 通过监听 SMS_RECEIVED_ACTION 广播到达时,这是一个不可中止广播……”
最佳答案
已修复。
第一个问题是,正如您在 revision 2 of my question 中看到的那样,当它实际上属于 intent-filter 元素时,我将 priority 属性放在 action 元素中。所以优先级不起作用。
虽然仍以 API 19 为目标,但我在启用环聊短信和不同优先级方面做了一些经验。
SMS_RECEIVED Intent SMS_RECEIVED Intent SMS_RECEIVED Intent 因此,您似乎需要为优先级设置一个最小值才能在启用环聊短信的情况下获得 Intent 。我没有费心将可能的最低值一分为二。 ;) 我选择 999,因为我看不出有任何降低的理由,因为我的应用程序只是对收到的短信进行了一些快速检查,并没有进一步处理它。但它确实应该有所作为,因为广播是不可中止的。
关于android - 在环聊 2.0 中启用 SMS 支持会破坏我的应用程序中 SMS_RECEIVED 的 BroadcastReceiver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20021492/
在启用Rack::Deflater来gzip我的响应主体时偶然发现了一些奇怪的东西。也许我遗漏了一些东西,但启用此功能后,响应被压缩,但是资源的ETag在每个请求上都会发生变化。这会强制应用程序每次都响应,而不是发送304。这在没有启用Rack::Deflater的情况下有效,我已经验证页面源没有改变。我正在运行一个使用thin作为Web服务器的Rails应用程序。Gemfile.lockhttps://gist.github.com/2510816有没有什么方法可以让我从Rack中间件获得更多的输出,这样我就可以看到发生了什么?提前致谢。 最佳答案
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。问题1)我想知道rubyonrails是否有功能类似于primefaces的gem。我问的原因是如果您使用primefaces(http://www.primefaces.org/showcase-labs/ui/home.jsf),开发人员无需担心javascript或jquery的东西。据我所知,JSF是一个规范,基于规范的各种可用实现,prim
最近因为项目需要,需要将Android手机系统自带的某个系统软件反编译并更改里面某个资源,并重新打包,签名生成新的自定义的apk,下面我来介绍一下我的实现过程。APK修改,分为以下几步:反编译解包,修改,重打包,修改签名等步骤。安卓apk修改准备工作1.系统配置好JavaJDK环境变量2.需要root权限的手机(针对系统自带apk,其他软件免root)3.Auto-Sign签名工具4.apktool工具安卓apk修改开始反编译本文拿Android系统里面的Settings.apk做demo,具体如何将apk获取出来在此就不过多介绍了,直接进入主题:按键win+R输入cmd,打开命令窗口,并将路
最近,我安装了OSXMavericks,它似乎弄乱了我的开发环境。我在运行“railsnewfirst_app”后收到此消息:Youruseraccountisn'tallowedtoinstalltothesystemRubygems.Youcancancelthisinstallationandrun:bundleinstall--pathvendor/bundletoinstallthegemsinto./vendor/bundle/,oryoucanenteryourpasswordandinstallthebundledgemstoRubygemsusingsudo.Pass
我的项目布局如下:-Project-css-import.scss-_sass/main.scssimport.scss的内容是:------@import"main.scss";我期望发生的是将main.scss导入到import.scss中,然后,import.scss将在生成的_site/目录中编译为import.css。相反,我收到以下错误Conversionerror:Therewasanerrorconverting'css/import.scss'.jekyll2.0.3|Error:InvalidCSSafter"-":expectednumberorfunction,
升级到OSXYosemite后,我现有的pow.cx安装不起作用。升级到最新的pow.cx无效。通过事件监视器重新启动它也没有成功。 最佳答案 卸载(!)并重新安装解决了这个问题。curlget.pow.cx/uninstall.sh|shcurlget.pow.cx|sh 关于ruby-on-rails-OSXYosemite更新破坏了pow.cx,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/q
我在新的Rails应用程序(3.2.3)中运行迁移时遇到了问题。我们正在使用postrgres9.1.3和-pg(0.13.2)-当我运行rakedb:create,然后运行rakedb:migrate,我得到->1.9.3-p194(master)rakedb:migrate--trace**Invokedb:migrate(first_time)**Invokeenvironment(first_time)**Executeenvironmentrakeaborted!PG::Error:ERROR:relation"roles"doesnotexistLINE4:WHEREa
我想在AmazonOpsWorks上使用Ruby2.0,所以我正在尝试以下操作:选择自定义Recipe并将它们设置到我的forkhttps://github.com/aws/opsworks-cookbooks在此处更新所有版本号https://github.com/aws/opsworks-cookbooks/blob/master/ruby/attributes/ruby.rb到2.0值。虽然这似乎没有任何效果。自定义说明书是否会覆盖其内置的说明书?OpsWorks是否使用Recipe中的Ruby配方来进行基本的Ruby设置?同样的问题也适用于Nginx-我可以通过更改Recipe
我正在尝试将Ruby1.9.3应用程序升级到2.0,除了一个小问题外,一切似乎都很顺利。我写了一个模块,我将其包含在我的模型中以覆盖activerecorddestroy。它将现有的destroy方法别名为destroy!,然后覆盖destroy以更改记录上的deleted_at时间戳。仅当我升级到ruby2.0时,destroy!不再破坏记录,但其行为就像我的新覆盖方法一样。知道为什么会这样吗?下面是更相关的代码部分。完整要点here.defself.included(base)base.class_evaldoalias_method:destroy!,:destroyalia
我在我的应用程序中使用to_param创建自定义URL(此自定义路径包含斜杠):classMachine问题是,自从Rails4.1.2行为发生变化并且Rails不允许在URL中使用斜线(当使用自定义URL时),所以它转义了斜线。我有这样的路线:Rails.application.routes.drawdoscope"(:locale)",locale:/#{I18n.available_locales.join("|")}/doresources:machines,except::destroydocollectiondoget:searchget'search/:ad_type(/