Permissions not supporting device - android

I have published an app to Google Play in alpha, during testing I discovered some devices required an additional permissions for ACCESS_WIFI_STATE so I added it and all was well.
Upon adding it to Google Play and attemping to download it on the device which required the permission (in this case it was a Galaxy Tab 2) I get the following error:
Previously active APKs supported more devices than those in the draft configuration. Some devices will not receive upgrades.
Devices currently running version 1 are no longer supported by the current configuration. Such devices will not receive upgrades.
API levels in range 14+ and
Release track containing any of [ALPHA] and
Screen layouts containing any of [small, normal, large, xlarge] and
Native platforms containing any of [armeabi, armeabi-v7a, mips, x86] and
Features containing all of [android.hardware.BLUETOOTH, android.hardware.CAMERA, android.hardware.camera.AUTOFOCUS, android.hardware.screen.PORTRAIT, android.hardware.TOUCHSCREEN] but excluding any of [android.hardware.WIFI]
My Manifest is like so:
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.android.vending.BILLING"/>
Could anyone explain why this error is appearing? The only device I see it on is the exact one I needed to add the given permission to.
Old Manifest was as so:
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.android.vending.BILLING"/>

From the uses-permission documentation:
In some cases, the permissions that you request through
can affect how your application is filtered by
Google Play.
If you request a hardware-related permission - CAMERA, for example -
Google Play assumes that your application requires the underlying
hardware feature and filters the application from devices that do not
offer it.
To control filtering, always explicitly declare hardware features in
<uses-feature> elements, rather than relying on Google Play to
"discover" the requirements in <uses-permission> elements. Then, if
you want to disable filtering for a particular feature, you can add a
android:required="false" attribute to the declaration.
For a list of permissions that imply hardware features, see the
documentation for the <uses-feature> element.
So you can add
<uses-feature android:name="android.hardware.wifi" android:required="false" />
like described here.

Related

Issue: Violation of Permissions policy from google console

Publishing status:
Rejected
After review, your app has been rejected and wasn't published due to a policy violation. If you submitted an update, the previous version of your app is still available on Google Play.
Issue:
Violation of Permissions policy After reviewing your app, we found that it doesn’t qualify to use the requested permissions for the following reason(s):
Based on our review, we found your app’s expressed user experience did not match your declared core functionality Default SMS handler (and any other core functionality usage while default handler). Please remove these permissions from your app.
Default handler capability was listed on your declaration form, but your app does not appear to have default handler capability. Please submit a revised declaration form.
Your app needs to use runtime permissions for us to complete the review. Please update your app to target API level 26 or above. If you have APKs in different tracks of the app releases section of your Play Console, please deactivate non-compliant APKs before submitting your app again. For additional guidance, please review the documentation on how to request app permissions.
I have already implemented SMS Retriever functionality and removed all SMS permissions and Call log permissions also.
using only permission related to Call & Phone are:
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission
android:name="android.permission.WRITE_SETTINGS"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="com.example.nyros.myapplication.C2D_MESSAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission
android:name="android.permission.MANAGE_DOCUMENTS"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="com.example.googlemaps.permission.MAPS_RECEIVE" />
<!-- <service android:name=".DownloadService"/> -->
<permission
android:name="com.example.googlemaps.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<permission
android:name="com.aquadeals.partner.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission
android:name="android.permission.CHANGE_NETWORK_STATE"
android:protectionLevel="signature" />
Do i need to remove any of the above mentioned manifest permissions or do i need to check any issues in the process of submitting APK to play console?
Don’t use CALL_PHONE permission, use Dialer intent instead.
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:0123456789"));
startActivity(intent);

How to filter the supporting android device at the time of publishing the android app?

I had finished my android app. App build version is 4.1.2. Now, i uploaded my apk into google console, it displays more that 4000 supporting devices. I am not sure my app will work on all the 4000 devices or not. My app is developed only for mobile.Can any one guide me how to filter the supporting devices ? Do i need any configuration in manifest file ?
please, look at my manifest file:-
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.demo"
android:versionCode="1"
android:versionName="1.0.0" >
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="20" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application>
......
....
<activity
.....
...../>
<application/>
*No need of any changes,the permission which you have given in manifest on that it will calculate the supporting device so better you remove the permissions which are not required and recheck ....it may show the less...
NOTE :Example permissions like:Remove which are not required....
While publishing the apk there is an option for you to see in apk section the list of devices to be supported. You can view the devices supported and exclude them from the list. Pl. refer to the below stack overflow link it provides you all the option
How to restrict android app to specific device make?

App is not listed in Google play store for tablet devices [duplicate]

This question already has answers here:
Why my App is not showing up on tablets in Google Play?
(7 answers)
Closed 3 months ago.
Have published the app on the google play store. Able to download and install on android phones.
But the app is not at all listed in Play store for tablet devices.
i suspect there is something wrong in my manifest file.
contents of the manifest file are
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:xlargeScreens="true"
android:smallScreens="true" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Please guide me with the changes which i have to make so that the app gets listed on Play Store for Tablet devices.
thanks in advance
There are two reason, I know, why my app doesn't be shown on Play Store.
The device's OS version is lower than you specified using "minsdkversion" on Androidmanifest.xml.
Permission things. If you declared permissions of Phone Call, Camera etc, and Tablet that not have those hardware, Users cannot find my app on Google Play Store for their device.
So, We should add some code to Androidmanifast.xml like below.
<uses-feature
android:name="android.hardware.telephony"
android:required="false" >
</uses-feature>
For more informations, check this Q/A.
,this document and this.
After #Lal's answer i did a simple test. I added the permissions below and upload a simple apk. Manifest is like below.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="com.fingerprints.service.ACCESS_FINGERPRINT_MANAGER" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.USE_FINGERPRINT" />
<uses-permission android:name="com.samsung.android.providers.context.permission.WRITE_USE_APP_FEATURE_SURVEY" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-feature android:name="android.hardware.telephony" android:required="false" />
I uploaded app to play store and i can install for tablet. Then i removed
<uses-feature android:name="android.hardware.telephony" android:required="false" />
and tried to update play store app and there was a warning that tablets cant download after this update. I took screenshot, may be some one can need this.
and this is details.
After published update, i could not install for tablet.

App not showing on Google Play despite it's compatible

I have a serious problem concerning the compatibility of my app with some devices.
At the moment these are my configurations and permissions:
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="19" />
<supports-screens android:anyDensity="true" />
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
This would in my opinion mean that my application is compatible with every smartphone (not tablet) with Android 4.0.x or higher. Is that correct?
Because I recognized that it is not compatible with Samsung Galaxy S II with 4.1.1 which I simulated with Genmyotion. Also our customer described this beviour on a real device. Does anyone of you know why this problem could occur?
I think I have found the problem by myself (see android market says no device compatible?)
I have included permission
<uses-permission android:name="android.permission.CAMERA"/>
which by default includes auto focus feature. So I have to add the following in my manifest to disable it:
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
Thanks to chrish

Google Play Console unsupported devices (808)

I have just released a app on Google Play. It shows unsupported 808 devices out of which some are listed below for reference
MICROMAX
A44– tinnoes13_s7050 A45– tinnoes73_s8030_2g P300– crane-M701C_mmx A73– A73 P275– P275
Also some testing on friends devices I realize that Android 4.0 devices, dont show the app on Google Play.
My Manifest file has the following. What am I missing here ? Is there a way to support "all" devices?
android:versionCode="10"
android:versionName="1.18" >
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.ACCESS_COARSE_UPDATES" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<!-- <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> -->
<uses-sdk
android:maxSdkVersion="16"
android:minSdkVersion="8"
android:targetSdkVersion="16" />
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true" />
I haven't mentioned the app since I dont want to violate SO's rules on self app promotion. If needed, I can mention it on a comment. Just request for it.
Don't use the maxSdkVersion attribute:
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="16" />
Any device with version > 16 will not show the app, f.e. devices running Android 4.2 (version 17).
Also, since you're requesting the android.permission.CALL_PHONE permission, the app will only be shown to devices that have phone capability. If your app can also run on devices that don't have phone capability, make it not required:
<uses-feature android:name="android.hardware.telephony" android:required="false" />
Same thing with android.permission.ACCESS_FINE_LOCATION, the app will only be shown for devices that have GPS, unless you make it not required:
<uses-feature android:name="android.hardware.location.gps" android:required="false" />
See http://developer.android.com/guide/topics/manifest/uses-feature-element.html#permissions for more info.

Categories

Resources