web-dev-qa-db-ja.com

PHONE_STATEインテントアクションから数値を読み取るAndroid 9機能していません

マニフェストファイルに登録されている次のブロードキャストレシーバーのonrecieve()メソッドを使用して、インテントエクストラから電話番号を取得しようとしました。

  <intent-filter>
            <action Android:name="Android.intent.action.PHONE_STATE" />
            <action Android:name="Android.intent.action.NEW_OUTGOING_CALL" />
        </intent-filter>

Android自分のPixel 2デバイスでアップグレードされたpie以外のすべてのバージョンの電話番号を正常に読み取ることができます。 documentation によると、アプリには読み取りのための追加の権限が必要ですREAD_CALL_LOG権限とREAD_PHONE_STATE権限である電話番号ですが、これらの権限を許可した後もREAD_CALL_LOGの権限がないため、電話番号を読み取ることができませんでした。この問題の解決にご協力ください。

7
android dev

Android 6.0+で実行時にREAD_PHONE_STATEおよびREAD_CALL_LOG権限を付与することを確認してください:
https://developer.Android.com/distribute/best-practices/develop/runtime-permissions

また、これら2つの権限を付与した後、ACTION_PHONE_STATE_CHANGEDブロードキャストインテントアクションを2回受け取ることに注意してください。 1つは電話番号が入力されたEXTRA_INCOMING_NUMBERを持ち、もう1つは空白です。

詳細についてはこちらをご覧ください:
https://developer.Android.com/reference/Android/telephony/TelephonyManager.html#ACTION_PHONE_STATE_CHANGED

12
SDev

ドキュメントごとに、ブロードキャストから提供される電話番号には追加の権限が必要です。これは、呼び出しログ情報へのアクセス権を取得するようなものです リクエストせずに

電話番号へのアクセスの制限Android 9で実行されているアプリは、アプリの使用例に必要な他の権限に加えて、最初にREAD_CALL_LOG権限を取得しないと、電話番号や電話の状態を読み取ることができません。

着信および発信コールに関連付けられた電話番号は、着信および発信コールなどの電話状態ブロードキャストに表示され、PhoneStateListenerクラスからアクセスできます。ただし、READ_CALL_LOG権限がない場合、PHONE_STATE_CHANGEDブロードキャストおよびPhoneStateListenerを通じて提供される電話番号フィールドは空になります。

電話の状態から電話番号を読み取るには、アプリを更新して、ユースケースに基づいて必要な権限をリクエストします。

PHONE_STATEインテントアクションから数値を読み取るには、READ_CALL_LOG権限とREAD_PHONE_STATE権限の両方が必要です。 onCallStateChanged()から数値を読み取るには、READ_CALL_LOG権限のみが必要です。 READ_PHONE_STATE権限は必要ありません。

ps。これをテストしてください。私のBroadcastrecieverでは、次のようなひどいブロックが必要です。

     if(Build.VERSION.SDK_INT >= 26 && intent!=null && intent.getExtras() !=null 
&& TextUtils.isEmpty(intent.getExtras().getString("incoming_number"))){
                        return;
                    }
4
j2emanue

新しいGoogle Playのアクセス許可の変更(つまり、2019年1月9日とAndroid Pie))により、上記のいずれも機能しなくなりました。アプリはローカルで機能するか、ユーザーが手動でAPKをダウンロードした場合でも、アプリをPlayストアに更新しなくなりました。GooglePlayからのメールの一部です。「Kishor Bapat9の開発者の皆さん、アプリについてEkalipi Call Announcer(ECA)についてGoogle Playチームにお問い合わせいただきありがとうございます。 。
公開ステータス
公開ステータス:拒否審査の結果、アプリは拒否され、ポリシー違反のため公開されませんでした。更新を送信した場合、アプリの以前のバージョンは引き続きGoogle Playで利用できます。問題:権限ポリシーの違反アプリを確認したところ、次の理由により、リクエストされた権限を使用する資格がないことがわかりました。

審査の結果、アプリの表現されたユーザーエクスペリエンスが、宣言されたコア機能{発信者ID、スパム検出、スパムブロック}と一致していないことがわかりました。これらの権限をアプリから削除してください。 」

注-これらのアクセス許可を具体的に要求することはありません。さまざまな方法で説明を変更することも試みました。キャッチ22-CALL_LOG権限を指定すると、Google Playはアプリを拒否します。権限を削除すると、着信番号を取得できなくなります。

2