如果这是一个悬而未决的问题我提前道歉,我无处可去。
简而言之,问题是:如何在不作为默认SMS信使的情况下访问Android手机上的传入短信?像Pushbullet这样的应用程序不会要求成为默认应用程序,并且他们设法以某种方式工作。我想取得同样的结果。
我遍布这个网站和其他人,以帮助解决这个问题。我正在尝试开发一个应用程序,一旦用户将SMS消息接收到他们的手机,它将处理SMS消息。这个"过程"包括解析它,并通过蓝牙将其发送到运行Python应用程序的PC(这部分工作极好)。 随着Android API的变化,我可以不再使用BroadcastReceiver拦截收到的短信(使用SMS_RECEIVED权限),因为这只会被发送到默认的短信应用程序,或者我当前的默认应用程序正在查杀广播。 我不想让我的应用成为默认的短信应用,所以我正在努力找到一种解决手机短信的方法。
经过研究,我回过头来看看这些选项:
如果您有任何问题或需要详细阐述,请告诉我,并提前感谢!
修改
BroadcastReceiver是要走的路!使用新的权限模型进行了一些修改和正确的权限,并且瞧!
答案 0 :(得分:1)
- 我错过了一些东西,我可以使用BroadcastReceiver,但我做错了。
醇>
是的。任何应用仍然可以获得SMS_RECEIVED
广播。事实上,这比现有的KitKat版本更可靠,因为广播不能再中止,所以每个注册接收它的应用都会得到它。
如果您的Receiver在清单中静态注册,请务必在安装后至少运行一次应用程序,使其退出已停止状态,否则您的Receiver将无法交付广播。此外,如果您的targetSdkVersion
为23或以上,并且您在API 23+下运行,则需要考虑Marshmallow的new permissions model。
- 我在手机上收听通知,当收到短信时,我使用Telephony.SMS访问收件箱以获取信息(不知道这是否有效或是否是首选策略)。
醇>
这不是最可靠的策略,因为用户可以停用他们选择的任何应用的通知。
- (很难找到相关信息)我可以创建一个服务来拦截我当前默认短信应用之上的这些消息吗?
醇>
不。默认的SMS应用程序获得SMS_DELIVER
广播,它是唯一接收它的应用程序。你不能拦截它,但没有必要,因为SMS_RECEIVED
广播仍然可用。
- 别人可以提出的其他内容。
醇>
见#1。