在 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

3GPP TS 23501-g51 中英文对照 | 4.4.2 SMS over NAS

特定号码的SMS消息未显示在其他Android设备上

如何在 Android 上分析传入的短信?

Android 上的 0 类 SMS(闪存 SMS)

Android - 查询 SMS ContentProvider?