我已经完成了允许Android将应用识别为潜在的默认消息(SMS / MMS)应用详细here所需的步骤,并且我已经关注了SO上的几个帖子 - 回复到博客帖子中列出的说明的投票答案。
然而,即使遵循这些说明,我相信我已经这样做了,我仍然无法让我的应用程序显示在系统对话框中,这将允许我选择我想要的应用程序作为默认消息客户。我情不自禁地觉得我仍然在清单中遗漏了一些东西,但我不太确定。如果有人对此有任何建议,我真的很感激。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.gregfmartin.smsdemo">
<uses-sdk android:minSdkVersion="19"/>
<uses-permission android:name="android.permission.READ_SMS"/>
<uses-permission android:name="android.permission.WRITE_SMS"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<application android:icon="@drawable/icon"
android:label="@string/app_name"
android:name=".ApplicationCore"
android:theme="@style/SmsDemo">
<!-- Listens for incoming SMS Messages -->
<receiver android:name=".components.receivers.SmsReceiver"
android:permission="android.permission.BROADCAST_SMS">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_DELIVER"/>
</intent-filter>
</receiver>
<!-- Listens for incoming MMS Messages -->
<receiver android:name=".components.receivers.MmsReceiver"
android:permission="android.permission.BROADCAST_WAP_PUSH">
<intent-filter>
<action android:name="android.provider.Telephony.WAP_PUSH_DELIVER"/>
<data android:mimeType="application/vnd.wap.mms-message"/>
</intent-filter>
</receiver>
<!-- Activity -->
<activity android:name=".Main">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name=".components.activities.ConversationThreadViewer">
<intent-filter>
<action android:name="android.intent.action.SEND"/>
<action android:name="android.intent.action.SENDTO"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
<data android:scheme="sms"/>
<data android:scheme="smsto"/>
<data android:scheme="mms"/>
<data android:scheme="mmsto"/>
</intent-filter>
</activity>
<!-- Headless SMS Handler -->
<service android:name=".components.services.HeadlessSmsSenderService"
android:permission="android.permission.SEND_RESPONSE_VIA_MESSAGE"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.RESPOND_VIA_MESSAGE"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:scheme="sms"/>
<data android:scheme="smsto"/>
<data android:scheme="mms"/>
<data android:scheme="mmsto"/>
</intent-filter>
</service>
</application>
</manifest>
答案 0 :(得分:0)
您需要添加类别
android.intent.category.APP_MESSAGING
参考http://developer.android.com/reference/android/content/Intent.html#CATEGORY_APP_MESSAGING
答案 1 :(得分:0)
我终于弄清楚发生了什么。我知道在我弄明白并且面对大约十分钟后,我踢了自己。
服务,HeadlessSmsSenderService,权限应该是android.permission.SEND_RESPOND_VIA_MESSAGE而不是android.permission.SEND_RESPONSE_VIA_MESSAGE。
回应/响应
真的?发送回复?
抓住它的原因是我复制并粘贴了Google博文的清单,并且刚刚制作了一个新的应用程序非常快,使用它并且很低,它出现在系统对话框中。所以我对它进行了差异化处理,我的清单和所有内容都匹配起来,除了那个拼写错误(以及我所拥有的组织变化)。
关于这一点的令人讨厌的部分是,当您键入它们时,IntelliJ会自动捕获一些权限和意图操作。我也不确定Lint是否会捕获这些类型的语义错误。对于所有意图和目的,应用程序将编译并运行干净。在logcat上没有找到输出,所以这真是一个几乎完全无声的问题。
感谢您的所有帮助!