10

以下は私のコードです:

<!-- Data SMS Receiver -->
    <receiver android:name=".otp.OTPReceiver" android:enabled="true" android:exported="true" >
        <intent-filter>
            <action android:name="android.intent.action.DATA_SMS_RECEIVED" />


            <data android:scheme="sms" />
            <data android:port="9027" />
        </intent-filter>
    </receiver>

otp.OTPReceiverこれは、BroadcastReceiver Redmi デバイスを除く他のすべての電話で機能します。Redmi フォンでは、権限アプリで自動起動とその他の権限を手動でオンにする必要があります(このアプリは Redmi フォンの権限を処理します)。インストール時にFacebook、whatsappなどが表示され、許可を求められます。これを行う方法を知りたいです。

thisthisのような同じことを尋ねている質問を見ましたが、どちらも答えられていません。hereに記載されているように、レシーバーxmlスニペットに を追加してandroid:enabled="true"みました。しかし、それらのどれも機能していません。 android:exported="true"

編集:私はdata sms(としても知られているport sms)を使用しています。通常のSMSでも確認しましたが、問題はRedmi電話にも存在します

4

1 に答える 1

2

長い間試行した後、MI SMS 許可を取得しました (SMS プロバイダー経由)。このメソッド (コンテンツ プロバイダー メソッド) をアクティビティまたはフラグメントに追加します。許可を得ることができます。

private void displaySmsLog() {
    Uri allMessages = Uri.parse("content://sms/");
    //Cursor cursor = managedQuery(allMessages, null, null, null, null);  Both are same
    Cursor cursor = this.getContentResolver().query(allMessages, null,
            null, null, null);

    while (cursor.moveToNext()) {
        for (int i = 0; i < cursor.getColumnCount(); i++) {
            Log.d(cursor.getColumnName(i) + "", cursor.getString(i) + "");
        }
        Log.d("One row finished",
                "**************************************************");
    }

}

試してみてください、うまくいきました。

于 2016-09-21T11:11:04.573 に答える