アプリをデフォルトのSMSアプリとして設定するにはどうすればよいですか?

ジェイス

アプリをデフォルトのSMSアプリとして設定する方法についてこのチュートリアル従っていますが、何らかの理由で、使用可能なオプションのリストにアプリが表示されません。私はこれを可能な限り調査しようとしましたが、すべてが同じチュートリアルを指しているか、時代遅れです。私も必要<receiver>ですか?誰かが私が間違っていることを説明できますか?

コード:

@Override
protected void onResume()
{
    super.onResume();
    Log.i("MainAcitvity", "On Resume Called");
    // Only do these checks/changes on KitKat+, the "mSetDefaultSmsLayout" has its visibility
    // set to "gone" in the xml layout so it won't show at all on earlier Android versions.
    final String myPackageName = getPackageName();

    if (Utility.hasKitKat())
    {
        if (Utility.isDefaultSmsApp(this))
        {
            // This app is the default, remove the "make this app the default" layout and
            // enable message sending components.
            mSetDefaultSmsLayout.setVisibility(View.GONE);
        }
        else
        {
            Log.i("MainActivity", "Not Default App");
            // Not the default, show the "make this app the default" layout and disable
            // message sending components.
            mSetDefaultSmsLayout.setVisibility(View.VISIBLE);

            Button button = (Button) findViewById(R.id.set_default_sms_button);
            button.setOnClickListener(new OnClickListener()
            {
                @Override
                public void onClick(View view)
                {                        
                    Log.i("MainActivity", "Button Pushed");
                    //Utility.setDefaultSmsApp(MainActivity.this);
                    Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
                    intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, myPackageName);
                    startActivity(intent);
                }
            });
        }
    }
}

マニフェスト:

<activity
    android:name=".MainActivity"
    android:label="@string/app_name">
    <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>
マイクM。

アプリをデフォルトのメッセージングアプリとして選択できるようにするには(システムに関する限り)、そのブログ投稿に示されているように、マニフェストにすべてのコンポーネントをリストする必要があります。これらのコンポーネントのクラスが実際に存在するかどうかは関係ありません。か否か。

<manifest>
    ...
    <application>
        <!-- BroadcastReceiver that listens for incoming SMS messages -->
        <receiver android:name=".SmsReceiver"
            android:permission="android.permission.BROADCAST_SMS">
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_DELIVER" />
            </intent-filter>
        </receiver>

        <!-- BroadcastReceiver that listens for incoming MMS messages -->
        <receiver android:name=".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 that allows the user to send new SMS/MMS messages -->
        <activity android:name=".ComposeSmsActivity" >
            <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>

        <!-- Service that delivers messages from the phone "quick response" -->
        <service android:name=".HeadlessSmsSendService"
            android:permission="android.permission.SEND_RESPOND_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>

システムはアプリのマニフェストを検査して、アプリがデフォルトのメッセージングアプリとして機能できるかどうかを判断するだけなので、アプリがデフォルトの選択リストに表示されるためには、これらのコンポーネントのクラスがすべて存在している必要はありません。これは学習とテストに役立ちますが、アプリがユーザーのデフォルトのメッセージングクライアントとして機能する場合は、指定されたすべてのコンポーネントを完全に実装する必要があります。

SMS / MMS関連のタスクを実行する場合は、関連する権限も必要になります。システムは、適格なデフォルトアプリの候補を決定するときにこれらをチェックしないようですが、対応する操作には次の権限が必要です。

<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.RECEIVE_MMS" />

指定されたアクションを実行しようとしたときに、、、または権限がない場合はSEND_SMSがスローされます。ただし、権限がない場合、アプリは適切なブロードキャストを配信されないため、これらの機能をテストしても何も起こらないように見える場合があります。READ_SMSWRITE_SMSSecurityExceptionRECEIVE_*

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Windows 10でGmail(ブラウザ)をデフォルトのメールアプリとして設定するにはどうすればよいですか?

分類Dev

アプリケーションでUISwitchの状態をデフォルトとして「ON」に設定するにはどうすればよいですか?

分類Dev

エスプレッソテストでアプリをデフォルトとして設定するにはどうすればよいですか?

分類Dev

リストされていない拡張機能のデフォルトアプリを設定するにはどうすればよいですか?

分類Dev

MacOS Xでtel:リンクを開くようにデフォルトのアプリを設定するにはどうすればよいですか?

分類Dev

MacOS Xでtel:リンクを開くようにデフォルトのアプリを設定するにはどうすればよいですか?

分類Dev

IDLEをPythonスクリプトのデフォルトエディタとして設定するにはどうすればよいですか?

分類Dev

IDLEをPythonスクリプトのデフォルトエディタとして設定するにはどうすればよいですか?

分類Dev

Androidでアプリ全体のフォントを設定するにはどうすればよいですか?

分類Dev

Katana / Owinセルフホストアプリのデフォルトの静的Webページを設定するにはどうすればよいですか?

分類Dev

qtのアプリのデフォルトのファイルマネージャーを設定するにはどうすればよいですか?

分類Dev

qtのアプリのデフォルトのファイルマネージャーを設定するにはどうすればよいですか?

分類Dev

MS Word 2010をすべてのdocxおよびその他のタイプのデフォルトアプリケーションとして設定するにはどうすればよいですか?

分類Dev

複数のウィンドウを持つアプリケーションを左クリックしたときに、デフォルトで「すべてのウィンドウ」を設定するにはどうすればよいですか?

分類Dev

Firebase:Androidアプリでデフォルトの通知チャネルを設定するにはどうすればよいですか?

分類Dev

Firebase:Androidアプリでデフォルトの通知チャネルを設定するにはどうすればよいですか?

分類Dev

Unity Launcherで他のユーザーのデフォルトアプリケーションを設定するにはどうすればよいですか?

分類Dev

Unity Launcherで他のユーザーのデフォルトアプリケーションを設定するにはどうすればよいですか?

分類Dev

AlertDialog / Checkbox for Androidアプリでデフォルトの言語を設定するにはどうすればよいですか?

分類Dev

Groovyスクリプトを使用してJenkinsでデフォルトの資格情報を設定するにはどうすればよいですか?

分類Dev

Oppoデバイスで「メッセージセキュリティのために、システムメッセージアプリがデフォルトのメッセージアプリとして設定されています」の問題を解決するにはどうすればよいですか?

分類Dev

SQLiteデータブラウザを.sqlite3ファイルのデフォルトアプリケーションとして設定するにはどうすればよいですか?

分類Dev

Android 6.0バックアップを使用してデフォルトの共有設定を復元するにはどうすればよいですか?

分類Dev

カスタムContractResolverを使用して、null JSONプロパティを値型メンバーに逆シリアル化するときにnullではなくデフォルト値を設定するにはどうすればよいですか?

分類Dev

ブラウザアプリをデフォルトのブラウザとして選択するにはどうすればよいですか?

分類Dev

php.exeをpharファイルのデフォルトアプリケーションとして設定するにはどうすればよいですか?

分類Dev

Ubuntu 14.04 LTSでmplayerをデフォルトのビデオアプリケーションとして設定するにはどうすればよいですか?

分類Dev

フラスコアプリのテキストと画像を使用してHTMLを設定するにはどうすればよいですか?

分類Dev

LCDをデフォルトのLCDとして設定するにはどうすればよいですか?

Related 関連記事

  1. 1

    Windows 10でGmail(ブラウザ)をデフォルトのメールアプリとして設定するにはどうすればよいですか?

  2. 2

    アプリケーションでUISwitchの状態をデフォルトとして「ON」に設定するにはどうすればよいですか?

  3. 3

    エスプレッソテストでアプリをデフォルトとして設定するにはどうすればよいですか?

  4. 4

    リストされていない拡張機能のデフォルトアプリを設定するにはどうすればよいですか?

  5. 5

    MacOS Xでtel:リンクを開くようにデフォルトのアプリを設定するにはどうすればよいですか?

  6. 6

    MacOS Xでtel:リンクを開くようにデフォルトのアプリを設定するにはどうすればよいですか?

  7. 7

    IDLEをPythonスクリプトのデフォルトエディタとして設定するにはどうすればよいですか?

  8. 8

    IDLEをPythonスクリプトのデフォルトエディタとして設定するにはどうすればよいですか?

  9. 9

    Androidでアプリ全体のフォントを設定するにはどうすればよいですか?

  10. 10

    Katana / Owinセルフホストアプリのデフォルトの静的Webページを設定するにはどうすればよいですか?

  11. 11

    qtのアプリのデフォルトのファイルマネージャーを設定するにはどうすればよいですか?

  12. 12

    qtのアプリのデフォルトのファイルマネージャーを設定するにはどうすればよいですか?

  13. 13

    MS Word 2010をすべてのdocxおよびその他のタイプのデフォルトアプリケーションとして設定するにはどうすればよいですか?

  14. 14

    複数のウィンドウを持つアプリケーションを左クリックしたときに、デフォルトで「すべてのウィンドウ」を設定するにはどうすればよいですか?

  15. 15

    Firebase:Androidアプリでデフォルトの通知チャネルを設定するにはどうすればよいですか?

  16. 16

    Firebase:Androidアプリでデフォルトの通知チャネルを設定するにはどうすればよいですか?

  17. 17

    Unity Launcherで他のユーザーのデフォルトアプリケーションを設定するにはどうすればよいですか?

  18. 18

    Unity Launcherで他のユーザーのデフォルトアプリケーションを設定するにはどうすればよいですか?

  19. 19

    AlertDialog / Checkbox for Androidアプリでデフォルトの言語を設定するにはどうすればよいですか?

  20. 20

    Groovyスクリプトを使用してJenkinsでデフォルトの資格情報を設定するにはどうすればよいですか?

  21. 21

    Oppoデバイスで「メッセージセキュリティのために、システムメッセージアプリがデフォルトのメッセージアプリとして設定されています」の問題を解決するにはどうすればよいですか?

  22. 22

    SQLiteデータブラウザを.sqlite3ファイルのデフォルトアプリケーションとして設定するにはどうすればよいですか?

  23. 23

    Android 6.0バックアップを使用してデフォルトの共有設定を復元するにはどうすればよいですか?

  24. 24

    カスタムContractResolverを使用して、null JSONプロパティを値型メンバーに逆シリアル化するときにnullではなくデフォルト値を設定するにはどうすればよいですか?

  25. 25

    ブラウザアプリをデフォルトのブラウザとして選択するにはどうすればよいですか?

  26. 26

    php.exeをpharファイルのデフォルトアプリケーションとして設定するにはどうすればよいですか?

  27. 27

    Ubuntu 14.04 LTSでmplayerをデフォルトのビデオアプリケーションとして設定するにはどうすればよいですか?

  28. 28

    フラスコアプリのテキストと画像を使用してHTMLを設定するにはどうすればよいですか?

  29. 29

    LCDをデフォルトのLCDとして設定するにはどうすればよいですか?

ホットタグ

アーカイブ