マニフェストファイルに登録されている次のブロードキャストレシーバーの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の権限がないため、電話番号を読み取ることができませんでした。この問題の解決にご協力ください。
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
ドキュメントごとに、ブロードキャストから提供される電話番号には追加の権限が必要です。これは、呼び出しログ情報へのアクセス権を取得するようなものです リクエストせずに 。
電話番号へのアクセスの制限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;
}
新しい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はアプリを拒否します。権限を削除すると、着信番号を取得できなくなります。