4.4下 设置小米默认短信铃声应用 后为什么发送不出短信?

安卓4.4kitkat如何选择默认的短信应用?
谷歌在安卓4.4kitkat将hangouts作为默认的短信应用给不少人造成了困扰,小编我在不久前告诉过大家“如何禁用hangouts(环聊)的短信?“,可以将hangouts的短信功能禁用,不过作为开放的安卓生态环境,谷歌当然不会排 ...
谷歌在安卓4.4kitkat将hangouts作为默认的短信应用给不少人造成了困扰,小编我在不久前告诉过大家““,可以将hangouts的短信功能禁用,不过作为开放的安卓生态环境,谷歌当然不会排斥hangouts,原生短信功能之外的任何第三方的短信应用,那么如何在安卓4.4里选择默认的短信应用呢?如果您是原生的安卓4.4的话,操作基本如下:打开设置,在”无线和网络“点击更多,您就看到默认短信应用(default sms app),点击它,就可以在弹出的窗口选择您想设置为默认短信应用的应用了。
加nexus中文网官方微信公众账号,扫描下图或者搜索"nexus中文网"关注!
上一篇:下一篇:
2112Nexus 频道
1419安卓动态
564谷歌应用
847安卓动态
964nexus 9
5647Nexus5
1107爱摩托
795谷歌应用
132697nexus5教程
117581Nexus5
100908基础入门
99342进阶玩法
71664进阶玩法
69715Nexus5
68311进阶玩法
65894进阶玩法
59279nexus5教程
57445进阶玩法
132698nexus5教程
117581Nexus5
100908基础入门
99342进阶玩法
71664进阶玩法
69715Nexus5
68311进阶玩法
65894进阶玩法
59279nexus5教程
57448进阶玩法
是为全球所有华人google迷提供交流最新,,,,,资讯,业界科技信息,使用和玩机技巧的科技资讯社交媒体网站
Powered by
nexus中文网QQ群(只加注册用户):(主力群), 8269925,moto x粉丝群1299655android4.4 获取符合默认短信应用要求的短信应用包名(改进篇) - 推酷
android4.4 获取符合默认短信应用要求的短信应用包名(改进篇)
来看,获取思路是正确的,但是还很不完善,但是这归根结底是google整出来的一套规范,如何去找到符合规范的应用呢,这得google告诉我们。
因此,我看了一下android源码,关键是SmsApplication中的
SmsApplicationData, 里面有个函数叫getApplicationCollection(Context context),这就是android4.4中系统用于获取符合默认短信应用要求的应用信息的代码,如下:
* Returns the list of available SMS apps defined as apps that are registered for both the
* SMS_RECEIVED_ACTION (SMS) and WAP_PUSH_RECEIVED_ACTION (MMS) broadcasts (and their broadcast
* receivers are enabled)
* Requirements to be an SMS application:
* Implement SMS_DELIVER_ACTION broadcast receiver.
* Require BROADCAST_SMS permission.
* Implement WAP_PUSH_DELIVER_ACTION broadcast receiver.
* Require BROADCAST_WAP_PUSH permission.
* Implement RESPOND_VIA_MESSAGE intent.
* Support smsto Uri scheme.
* Require SEND_RESPOND_VIA_MESSAGE permission.
* Implement ACTION_SENDTO intent.
* Support smsto Uri scheme.
public static Collection&SmsApplicationData& getApplicationCollection(Context context) {
PackageManager packageManager = context.getPackageManager();
// Get the list of apps registered for SMS
Intent intent = new Intent(Intents.SMS_DELIVER_ACTION);
List&ResolveInfo& smsReceivers = packageManager.queryBroadcastReceivers(intent, 0);
HashMap&String, SmsApplicationData& receivers = new HashMap&String, SmsApplicationData&();
// Add one entry to the map for every sms receiver (ignoring duplicate sms receivers)
for (ResolveInfo resolveInfo : smsReceivers) {
final ActivityInfo activityInfo = resolveInfo.activityI
if (activityInfo == null) {
if (!permission.BROADCAST_SMS.equals(activityInfo.permission)) {
final String packageName = activityInfo.packageN
if (!receivers.containsKey(packageName)) {
final String applicationName = resolveInfo.loadLabel(packageManager).toString();
final SmsApplicationData smsApplicationData = new SmsApplicationData(
applicationName, packageName, activityInfo.applicationInfo.uid);
smsApplicationData.mSmsReceiverClass = activityInfo.
receivers.put(packageName, smsApplicationData);
// Update any existing entries with mms receiver class
intent = new Intent(Intents.WAP_PUSH_DELIVER_ACTION);
intent.setDataAndType(null, &application/vnd.wap.mms-message&);
List&ResolveInfo& mmsReceivers = packageManager.queryBroadcastReceivers(intent, 0);
for (ResolveInfo resolveInfo : mmsReceivers) {
final ActivityInfo activityInfo = resolveInfo.activityI
if (activityInfo == null) {
if (!permission.BROADCAST_WAP_PUSH.equals(activityInfo.permission)) {
final String packageName = activityInfo.packageN
final SmsApplicationData smsApplicationData = receivers.get(packageName);
if (smsApplicationData != null) {
smsApplicationData.mMmsReceiverClass = activityInfo.
// Update any existing entries with respond via message intent class.
intent = new Intent(TelephonyManager.ACTION_RESPOND_VIA_MESSAGE,
Uri.fromParts(&smsto&, &&, null));
List&ResolveInfo& respondServices = packageManager.queryIntentServices(intent, 0);
for (ResolveInfo resolveInfo : respondServices) {
final ServiceInfo serviceInfo = resolveInfo.serviceI
if (serviceInfo == null) {
if (!permission.SEND_RESPOND_VIA_MESSAGE.equals(serviceInfo.permission)) {
final String packageName = serviceInfo.packageN
final SmsApplicationData smsApplicationData = receivers.get(packageName);
if (smsApplicationData != null) {
smsApplicationData.mRespondViaMessageClass = serviceInfo.
// Update any existing entries with supports send to.
intent = new Intent(Intent.ACTION_SENDTO,
Uri.fromParts(&smsto&, &&, null));
List&ResolveInfo& sendToActivities = packageManager.queryIntentActivities(intent, 0);
for (ResolveInfo resolveInfo : sendToActivities) {
final ActivityInfo activityInfo = resolveInfo.activityI
if (activityInfo == null) {
final String packageName = activityInfo.packageN
final SmsApplicationData smsApplicationData = receivers.get(packageName);
if (smsApplicationData != null) {
smsApplicationData.mSendToClass = activityInfo.
// Remove any entries for which we did not find all required intents.
for (ResolveInfo resolveInfo : smsReceivers) {
final ActivityInfo activityInfo = resolveInfo.activityI
if (activityInfo == null) {
final String packageName = activityInfo.packageN
final SmsApplicationData smsApplicationData = receivers.get(packageName);
if (smsApplicationData != null) {
if (!smsApplicationData.isComplete()) {
receivers.remove(packageName);
return receivers.values();
* Checks to see if we have a valid installed SMS application for the specified package name
* @return Data for the specified package name or null if there isn't one
private static SmsApplicationData getApplicationForPackage(
Collection&SmsApplicationData& applications, String packageName) {
if (packageName == null) {
// Is there an entry in the application list for the specified package?
for (SmsApplicationData application : applications) {
if (application.mPackageName.contentEquals(packageName)) {
从源码的实现来看,我上一篇关于这个功能的blog思路相当正确,只不过没用让它几个条件同时满足,因此,若我们需要获取符合默认短信应用要求的短信应用包名的话,我们只要原原本本地把源码搞出来用就行了
由于这个是隐藏的类和函数,我们获取不到,用反射又会相当麻烦,直接把实现给拷出来不失为一个良策。
要判断拿到的collection中的某一个是不是完全符合默认短信应用的要求怎么办呢?调用一下SmsApplication.isComplete()就OK了。
已发表评论数()
&&登&&&陆&&
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见  北京时间10月15日消息,据科技网站TheNextWeb报道,谷歌今天公布消息:Android 4.4(奇巧,KitKat)将引入默认短信应用的概念,用户可以在系统设置中自主选择。而且,新版本将公开应用程序编程接口(API),以方便开发。
21CN科技配图
  谷歌提到,许多Android应用开发者使用隐藏编程接口,开发短信应用。隐藏意味着,这些编程接口可能会被修改或移除,同样无法测试应用是否兼容新设备,可以看出,谷歌试图阻止开发者开发自主短信应用。在Android4.4中,谷歌将尝试把所有短信应用放在同一页面上。
  据传,奇巧系统中将装备具有短信功能的群聊应用。如果传言属实,这款应用将有望成为系统默认。考虑到现在平台上,存在不少通过高级短信应用偷发扣费短信的程序,此举还将缓解Android系统上的恶意软件问题。
  另外,谷歌还要求Android开发者&尽可能快地&升级他们所开发的应用。该公司提到,将&尽快(soon)&提供Android4.4的软件开发包(SDK),以方便开发者编译、测试。后使用快捷导航没有帐号?
升级4.4后手机自动发送tcyl和cxgll短信是怎么回事?
&炉火纯青&
来自:浏览器
我的手机是荣耀3c联通2g版,自7月1日升级到4.4后手机卡1总是发送tcyl短信,卡2总是发送
cxgll发送短信,这为什么?
width:100%">
&热心花粉&
来自:浏览器
楼主用的卡一是联通,卡二是移动。这俩都是查询套餐余量的,可以放心
width:100%">
&炉火纯青&
来自:浏览器
怎么没有人说一说为什么呢?
width:100%">
&炉火纯青&
来自:浏览器
不知道,帮忙顶一下。。。。
width:100%">
&自成一派&
来自:浏览器
CXGLL是查询GPRS流量的简称,发送CXGLL到10086,查询当月已使用的GPRS流量,第一个代码不知道干什么的,应该是你在矫正剩余流量的时候手机管家自动发送的代码
工程师,你们能稍微的给力点么,别只是为了交作业!
width:100%">
&自成一派&
来自:浏览器
width:100%">
&禁止访问&
来自:浏览器
提示: 作者被禁止或删除 内容自动屏蔽
width:100%">
&神功盖世&
来自:浏览器
设置了自动校正流量
width:100%">
&独步江湖&
来自:浏览器
我的也有那个现象,自动发送短信& &而且不是查流量的,都不一样,就像随便按的
width:100%">
&已臻大成&
来自:浏览器
同问,我的也有
width:100%">
申请成为热心花粉,满足热心花粉条件即可获得!http://cn./forum.php?mod=viewthread&tid=183642
好基友勋章
花粉好机友,注册时间大于99天
1000万花粉
纪念花粉俱乐部注册花粉数超过1000万
沙发王勋章
荣耀6plus夜景福州鼓岭上的风景海边的景色优雅生活带上荣耀6pIus看城市亲自下厨
花粉达人秀
花粉客户端
Make it Possible
Make your device special
华为云服务
Huawei cloud services
音乐播放器
huawei music
没有最新动态
关注花粉俱乐部
联系我们:
|关注花粉俱乐部:
Copyright (C)
华为软件技术有限公司 版权所有 保留一切权利android 4.4 设置应用为默认短信的问题
[问题点数:40分,结帖人u]
android 4.4 设置应用为默认短信的问题
[问题点数:40分,结帖人u]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

我要回帖

更多关于 android 4.4 删除短信 的文章

 

随机推荐