在Android

时间:2016-04-11 20:50:14

标签: android sms

如果这是一个悬而未决的问题我提前道歉,我无处可去。

简而言之,问题是:如何在不作为默认SMS信使的情况下访问Android手机上的传入短信?像Pushbullet这样的应用程序不会要求成为默认应用程序,并且他们设法以某种方式工作。我想取得同样的结果。

我遍布这个网站和其他人,以帮助解决这个问题。我正在尝试开发一个应用程序,一旦用户将SMS消息接收到他们的手机,它将处理SMS消息。这个"过程"包括解析它,并通过蓝牙将其发送到运行Python应用程序的PC(这部分工作极好)。 随着Android API的变化,我可以不再使用BroadcastReceiver拦截收到的短信(使用SMS_RECEIVED权限),因为这只会被发送到默认的短信应用程序,或者我当前的默认应用程序正在查杀广播。 我不想让我的应用成为默认的短信应用,所以我正在努力找到一种解决手机短信的方法。

经过研究,我回过头来看看这些选项:

  1. 我错过了一些东西,我可以使用BroadcastReceiver,但我做错了。
  2. 我在手机上收听通知,当收到短信时,我使用Telephony.SMS访问收件箱以获取信息(不知道这是否有效或是否是首选策略)。
  3. (很难找到相关信息)我是否可以创建一项拦截这些消息以上我当前默认短信应用的服务?
  4. 别人可以提出的其他内容。
  5. 如果您有任何问题或需要详细阐述,请告诉我,并提前感谢!

    修改

    BroadcastReceiver是要走的路!使用新的权限模型进行了一些修改和正确的权限,并且瞧!

1 个答案:

答案 0 :(得分:1)

  
      
  1. 我错过了一些东西,我可以使用BroadcastReceiver,但我做错了。
  2.   

是的。任何应用仍然可以获得SMS_RECEIVED广播。事实上,这比现有的KitKat版本更可靠,因为广播不能再中止,所以每个注册接收它的应用都会得到它。

如果您的Receiver在清单中静态注册,请务必在安装后至少运行一次应用程序,使其退出已停止状态,否则您的Receiver将无法交付广播。此外,如果您的targetSdkVersion为23或以上,并且您在API 23+下运行,则需要考虑Marshmallow的new permissions model

  
      
  1. 我在手机上收听通知,当收到短信时,我使用Telephony.SMS访问收件箱以获取信息(不知道这是否有效或是否是首选策略)。
  2.   

这不是最可靠的策略,因为用户可以停用他们选择的任何应用的通知。

  
      
  1. (很难找到相关信息)我可以创建一个服务来拦截我当前默认短信应用之上的这些消息吗?
  2.   

不。默认的SMS应用程序获得SMS_DELIVER广播,它是唯一接收它的应用程序。你不能拦截它,但没有必要,因为SMS_RECEIVED广播仍然可用。

  
      
  1. 别人可以提出的其他内容。
  2.   

见#1。