在 Android 4.4.2 上更改 SMS 应用默认值
Posted
技术标签:
【中文标题】在 Android 4.4.2 上更改 SMS 应用默认值【英文标题】:Change SMS App Default on Android 4.4.2 【发布时间】:2014-01-31 22:13:52 【问题描述】:我会更改 android 4.4.2 上的默认短信应用
我使用这个代码:
Intent sendIntent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
sendIntent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, context.getPackageName());
startActivity(sendIntent);
我该如何解决这个问题?以及如何要求使用我的应用更改默认短信应用?
我的接收者:
<receiver android:name="receiver.SMSHandlerReceiver"
android:permission="android.permission.BROADCAST_SMS" >
<intent-filter>
<action android:name="android.provider.Telephony.SMS_DELIVER" />
</intent-filter>
</receiver>
谢谢。
【问题讨论】:
为什么需要从您的应用程序中更改默认短信应用程序?默认应用程序是用户选择,因此 imo,强制另一个选项可以被解释为恶意。 我会要求更改默认应用程序.. 【参考方案1】:看来,如果您希望您的应用出现在默认短信应用设置中,您必须首先使其符合条件,否则您无法将您的应用设置为默认短信应用。我遇到了同样的问题,所以我做了这些简单的步骤,然后我可以在设置和代码中选择我的应用程序作为默认应用程序,这是我以前无法做到的。
所以:
您必须有一个 Activity,其中包含一个带有 ACTION_SENDTO ("android.intent.action.SENDTO" ) 和模式 sms、smsto、mms 和 mmsto 的意图过滤器。在您的清单文件中执行此操作。我所做的是使用这些参数创建一个我不会使用的空活动。
做同样的事情,通过创建一个空服务,包括一个带有 ACTION_RESPOND_VIA_MESSAGE ("android.intent.action.RESPOND_VIA_MESSAGE") 和模式、sms、smsto、mms 和 mmsto 的意图过滤器。此服务还必须需要 SEND_RESPOND_VIA_MESSAGE 权限。您必须在清单中添加所有必需的权限。
创建一个空的 BroadcastReceiver,包括一个带有 WAP_PUSH_DELIVER_ACTION ("android.provider.Telephony.WAP_PUSH_DELIVER") 和 MIME 类型 application/vnd.wap.mms-message 的意图过滤器。广播接收器还必须需要 BROADCAST_WAP_PUSH 权限。您必须在清单中添加所有必需的权限。
创建一个空的 BroadcastReceiver,包括一个带有 SMS_DELIVER_ACTION ("android.provider.Telephony.SMS_DELIVER") 的意图过滤器。广播接收器还必须需要 BROADCAST_SMS 权限。您必须在清单中添加所有必需的权限。
重要的是要设置所有这些参数,不要遗漏任何一个。完成所有这些步骤后,您的应用程序将符合条件,然后您可以将其设置为默认短信应用程序,将这些创建的类留空,并坚持使用旧的做事方式。目标只是将您的应用设置为默认应用,这样它就可以像以前一样拥有完整的功能,无需修改代码。
【讨论】:
Ulan yine ne varsa şu Türklerde var he :D Bende aranıyodum,bende servis yok,nasıl tanımlicam diye :) Aynen, mühendis ruhu var bizde napalim =D kafa çalisiyor kullanmak gerek. forum.xda-developers.com/showthread.php?t=2222703 bu site de açiklamalar var,*** da da bulabilirsin,ben simdilik mms lerle ugrasmiyorum。 您做错了什么或缺少某些东西。您必须遵循所有这些步骤,否则它不起作用。此外,当您设置 sheme 时,您必须通过在意图过滤器中为每个 sheme 创建新数据来将它们分开。也许您在意图过滤器中为所有 sms、mms、smsto、mmsto shemes 创建了一个数据,而不是创建 4 个数据并在每个数据中只设置一个 sheme。 您是否将您的 default.properties 文件更改为目标 sdk 19? project.properties 还必须以 sdk 19 为目标,例如,在您的清单中,您也可以以 sdk 11 为目标,以获得最佳兼容性,同时完全支持 kitkat。也许你只是没有使用 kitkat 库,在 gen 文件夹之后,它必须是 Android 4.4 或 > 。完成这些步骤后,执行 Project/Clean,然后右键单击您的项目/Android 工具/修复项目属性。【参考方案2】:我会更改 Android 4.4.2 上的默认短信应用
您无法更改默认短信应用。但是,您可以使用 Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT
要求用户更改默认 SMS 应用程序。 the official blog post on the SMS changes in Android 4.4 对此进行了介绍。
【讨论】:
@user3253955:你有什么问题?代码看起来不错。但请注意,可能没有这样的活动,尤其是在没有电话功能的设备上。 电话有电话功能。问题是这段代码没有显示更改请求。我必须添加任何权限或实施其他权限吗?感谢您的帮助。 @user3253955:我不知道任何需要的权限才能使用它。如果您正在崩溃,请查看 Java 堆栈跟踪。如果堆栈跟踪有SecurityException
,它应该通知您任何缺少的权限。如果堆栈跟踪是ActivityNotFoundException
,那么无论出于何种原因,您的设备制造商(或 ROM 模块创建者)都没有提供此功能。如果您没有崩溃,那么无论出于何种原因,您的设备制造商(或 ROM mod 创建者)做了一些非常奇怪的事情。 :-)
我没有崩溃,堆栈跟踪也没有报告任何内容 :( 我在手机和 Eclipse 模拟器上都尝试了这段代码。有什么想法吗?
@user3253955:没有线索,抱歉。以上是关于在 Android 4.4.2 上更改 SMS 应用默认值的主要内容,如果未能解决你的问题,请参考以下文章
在 Android OS 4.4.2/MobileFirst 混合应用程序上启用 TLS 1.2