androidandroid-permissionsgoogle-play-consoleruntime-permissionscaller-id

Google Play review: unable to verify declared functionality CALLER_ID_DETECTION_BLOCKING


I have this caller ID app, that stores user's contacts on the cloud, and allow users to search for numbers manually, or when they receive a phone call (this option is only available when the user buys a paid subscription).

I am trying to upload it to the store, but they keep refusing it, and the message I get from them is the following:

Hi Developers at my company, Thanks for contacting the Google Play team about your app Callnum - Caller ID, com.my.app. We reviewed your app and found that it does not qualify for use of the requested permissions.

We were unable to verify the declared functionality CALLER_ID_DETECTION_BLOCKING during app review.

Your app needs to be using runtime permissions for us to complete the review. Please update your app to target API level 26 or above and resubmit the declaration form.

Next steps: Submit your app for another review

  1. Read through the Permissions policy and the Play Console Help Center article, which describes intended uses, exceptions, invalid uses, and alternative options for use of Call Log or SMS permissions.
  2. Make appropriate changes to your app.
  3. Sign in to your Play Console and submit the update to your app. If you've reviewed the policy and have further questions, please reach out to our policy support team. Please help us improve the developer experience by completing this two question survey.

As usual, Google's messages are not that clear, and sometimes even wrong, because my app is definitely targeting API level 28.

These are the permissions that I ask for:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.ANSWER_PHONE_CALLS" />
<uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.ACTION_MANAGE_OVERLAY_PERMISSION" />

<uses-permission
    android:name="android.permission.INTERNAL_SYSTEM_WINDOW"
    tools:ignore="ProtectedPermissions" />
<uses-permission
    android:name="android.permission.READ_PRIVILEGED_PHONE_STATE"
    tools:ignore="ProtectedPermissions" />

And the user will prompt to accept these two permissions (Phone and Access contacts) right after he accepts the Privacy Policy and Terms of Services that appear the first time the user launches the app.

I was also using this permission android.permission.PROCESS_OUTGOING_CALLS but I removed it when I read this: Permissions: Privacy, Security and Deception and this: Use of SMS or Call Log permission groups, but still my app was rejected...

I am completely stumped here, and any help is much appreciated.

Also if any one know how to resubmit the declaration form, please tell me, maybe I missed out something there.


Solution

  • Problem solved after removing the permission android.permission.PROCESS_OUTGOING_CALLS altogether from the manifest. I guess there is a bug on Google's permission detecting system, because it detects commented permissions as well....