In the latest beta version I just published to the Play Store, I notice that the READ_PHONE_STATE
has been added since the previous version.
I haven't added this myself. All I can recall doing since the previous version is using v9.6.0 of various play-services libraries (was v9.4.0):
compile 'com.google.android.gms:play-services-location:9.6.0' compile 'com.google.android.gms:play-services-places:9.6.0' compile 'com.google.android.gms:play-services-auth:9.6.0'
Would this have done it? I can't see it documented. Can I get rid of the permission?
And I've ensured that all the of the libraries I'm using match the main app, as per this answer... makes no difference in my case.
EDIT
OK based on this article, I've delved into my log output to find:
ADDED from [Meteogram:jobdispatcher:unspecified] C:\Users\Me\AndroidStudioProjects\Meteogram\app\build\intermediates\exploded-aar\Meteogram\jobdispatcher\unspecified\AndroidManifest.xml:37:25-84 android:uses-permission#android.permission.READ_PHONE_STATE
But nothing has changed in the jobdispatcher library (which I imported into my project as a gradle module) since the last version.
EDIT2
Here is a bit more from that log, and my feeling is that maybe it is due to the play-services library version as suspected?
ADDED from [Meteogram:jobdispatcher:unspecified] C:\Users\Me\AndroidStudioProjects\Meteogram\app\build\intermediates\exploded-aar\Meteogram\jobdispatcher\unspecified\AndroidManifest.xml:37:17-87 android:name ADDED from [Meteogram:jobdispatcher:unspecified] C:\Users\Me\AndroidStudioProjects\Meteogram\app\build\intermediates\exploded-aar\Meteogram\jobdispatcher\unspecified\AndroidManifest.xml:37:25-84 android:uses-permission#android.permission.READ_PHONE_STATE IMPLIED from C:\Users\Me\AndroidStudioProjects\Meteogram\app\src\pro\AndroidManifest.xml:2:1-12:12 reason: com.google.android.gmscore.integ.client.location has a targetSdkVersion < 4 activity#com.google.android.gms.common.api.GoogleApiActivity
The targetSdkVersion < 4
matches with the other answer linked above, but is there anything I can do in this situation, since the play-services library is not mine?
EDIT3
I found an answer... rather than delete this question I'll leave it up, with solution, in case it's useful for others (and in case someone else has a better solution!)
EDIT4
Looks like it has been fixed in 9.6.1
.
permission. READ_PHONE_STATE - You must ask the end user to grant this permission.) Allows read only access to the phone's state, and is used to determine the status of any ongoing calls. You need this permission so you can verify that your end user receives a phone call from TeleSign. android.
Use of the broad package (App) visibility (QUERY_ALL_PACKAGES) permission. Google Play restricts the use of high-risk or sensitive permissions, including the QUERY_ALL_PACKAGES permission, which gives visibility into the inventory of installed apps on a given device.
If your app needs to access the user's location, you must request permission by adding the relevant Android location permissions to your app. Android offers two location permissions: ACCESS_COARSE_LOCATION and ACCESS_FINE_LOCATION . The permission you choose determines the accuracy of the location returned by the API.
Reading phone state (READ_PHONE_STATE) lets the app know your phone number, current cellular network information, the status of any ongoing calls and so on. Make calls (CALL_PHONE).
I eventually found this, which reports the same issue. One workaround is mentioned in Answer #3, which is to remove the permission "manually" (my assumption is that the permission is only required for very early Android versions, which is OK for me since my minSdk
is 16):
<manifest ... xmlns:tools="http://schemas.android.com/tools" ... > <uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove" />
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With