Android Studio:我的短信应用不是默认短信应用的选项之一

Android Studio: my sms app is not one of the options for default SMS app

我是 android 应用程序开发的新手,请多多包涵。

我制作了一个 SMS 应用程序,现在正尝试让用户选择将该应用程序设为默认的 SMS 应用程序。 我读过该应用程序应该能够完成标准 SMS 应用程序可以做的所有事情,然后才能成为默认的 SMS 应用程序。 该应用程序可以实现的功能是:发送短信以及接收和阅读传入的短信。 我还制作了用于接收彩信的 broadcastreceivers 和用于快速响应的服务。 这些除了存在之外什么都不做,所以我的 phone 认为该应用程序能够完成 SMS 应用程序应该做的所有事情。

我已经这样做了,所以当用户打开应用程序时,应用程序会检查该应用程序是否是默认的短信应用程序。如果不是,它会询问用户是否要将应用设置为默认应用。问题是我的应用程序没有显示为默认 SMS 应用程序的选项之一。 我认为这是因为 phone 认为该应用程序无法完成 SMS 应用程序需要做的所有事情,因此没有将其显示为选项之一。

这是我的清单文件:

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.imessages">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.RESPOND_VIA_MESSAGE" />
    <uses-permission android:name="android.permission.WAP_PUSH_DELIVER" />
    <uses-permission android:name="android.permission.RECEIVE_MMS" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.WRITE_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_MMS" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>


    <application
        android:allowBackup="false"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".editNameAndPhoto_activity" />

        <receiver
            android:name=".MySMSReceiver"
            android:enabled="true"
            android:exported="true"
            android:permission="android.permission.BROADCAST_SMS">
            <intent-filter android:priority="999">
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
                <action android:name="android.permission.BROADCAST_SMS" />
            </intent-filter>
        </receiver>

        <receiver android:name=".MyMMSReceiver"
            android:exported="true"
            android:permission="android:permission.BROADCAST_WAP_PUSH">
            <intent-filter android:priority="999" >
                <action android:name="android.provider.Telephony.WAP_PUSH_DELIVER" />
                <data android:mimeType="application/vnd.wap.mms-message" />
            </intent-filter>
        </receiver>

        <service
            android:name=".QuickResponseService"
            android:exported="true"
            android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE">
            <intent-filter>
                <category android:name="android.intent.category.DEFAULT" />
                <action android:name="android.intent.action.RESPOND_VIA_MESSAGE" />
                <data android:scheme="sms" />
                <data android:scheme="smsto" />
                <data android:scheme="mms" />
                <data android:scheme="mmsto" />
            </intent-filter>
        </service>

        <activity android:name=".Messages" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />

                <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>

        <activity android:name=".MainActivity" />

        <meta-data
            android:name="preloaded_fonts"
            android:resource="@array/preloaded_fonts" />
    </application>

</manifest>

我还是个新手,所以我已经将所有内容都包含在清单中,这将使我的应用程序看起来像是一个 SMS 应用程序。那里可能有一些不应该在那里的东西。 提前致谢。

所以我设法修复了它。 谢谢你的帮助。 我想我知道是什么修复了它(感谢 Pawel)这是我的解释:

我删除了 exported = "true"enabled = "true",因为我发现它们无关紧要,至少对于我的项目而言。这与问题无关。 我确实将 .MySMSReceiverSMS_RECEIVED 更改为 Pawel 告诉我的 SMS_DELIVER。我做到了,起初它不起作用,但现在它起作用了。一定是我的错误对不起! 谢谢您的帮助!很抱歉搞砸了你的回答帕维尔。

这是我的清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.imessages">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.SEND_SMS" />
    <uses-permission android:name="android.permission.RESPOND_VIA_MESSAGE" />
    <uses-permission android:name="android.permission.WAP_PUSH_DELIVER" />
    <uses-permission android:name="android.permission.RECEIVE_MMS" />
    <uses-permission android:name="android.permission.RECEIVE_SMS" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.READ_SMS" />
    <uses-permission android:name="android.permission.WRITE_SMS" />
    <uses-permission android:name="android.permission.RECEIVE_MMS" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>


    <application
        android:allowBackup="false"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".editNameAndPhoto_activity" />

        <receiver
            android:name=".MySMSReceiver"
            android:enabled="true"
            android:exported="true"
            android:permission="android.permission.BROADCAST_SMS">
            <intent-filter android:priority="999">
                <action android:name="android.provider.Telephony.SMS_DELIVER" />
                <action android:name="android.permission.BROADCAST_SMS" />
            </intent-filter>
        </receiver>

        <receiver android:name=".MyMMSReceiver"
            android:exported="true"
            android:permission="android.permission.BROADCAST_WAP_PUSH">
            <intent-filter android:priority="999" >
                <action android:name="android.provider.Telephony.WAP_PUSH_DELIVER" />
                <data android:mimeType="application/vnd.wap.mms-message" />
            </intent-filter>
        </receiver>

        <service
            android:name=".QuickResponseService"
            android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE">
            <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>

        <activity android:name=".Messages" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <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>

        <activity android:name=".MainActivity" />

        <meta-data
            android:name="preloaded_fonts"
            android:resource="@array/preloaded_fonts" />
    </application>

</manifest>