10

続きを読んでいない私のコードです:Redmi電話SMSの許可を求めていないので、SMS

<!-- 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これはRedmiデバイス以外のすべての他の携帯電話で動作する関連するBroadcastReceiver です。 Redmiの携帯電話では、パーミッションアプリ(このアプリはRedmiの携帯電話のパーミッションを処理します)の自動起動&の他のアクセス権を手動で有効にする必要があります。私は、Facebook、whatsappなどがアクセス許可を求めるときにインストールされているのを見る。これがどのように行われるのか知りたいですか?

this & thisのような質問がありましたが、どちらも回答がありません。 hereのように、android:enabled="true"android:exported="true"を受信者のxmlスニペットに追加しようとしました。しかし、それらのどれも働いていません。

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

+0

あなたのtargetSdkは何ですか? – Nisarg

+0

targetSdkVersion 24 – ranjjose

+0

もしあれば、実行時のアクセス許可をチェックしていると思います! – Nisarg

答えて

2

長い時間をかけて試してみると、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", 
       "**************************************************"); 
    } 

} 

試してみてください、それは私のために働いてください。

+0

ありがとう、できるだけ早くこれを試してみましょう! – ranjjose

+0

ちょっとフィードバックを送ってください.....そのMI 4iで働いています...私はテストし、他のMI電話 –

+0

のためにいくつかの注意を払うようにデバイスリストを更新してください......それは私たちのために役立つでしょう –

関連する問題