Android permission reduces the number of supported devices - android

I m up loading my latest apk onto google play store with few new permissions
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
doing so have reduced the number of supported devices. How can I make it support the earlier devices as it did before?

i think you can use <uses-feature> tag in your manifest file to tell google play that your app doesn't need the proper hardware for that if the device doesn't support that hardware:
<uses-feature android:name="android.hardware.wifi" android:required="false" />

Related

Play console does not consider uses-feature -> required="false" in manifest for android app bundle

I am trying to publish app bundle on play store. It shows wifi only tablet not supported because of android.hardware.telephony feature. I set this feature's required flag to false. But still play console shows the same error in device catalogue. Any idea why it is showing an error as not supported device samsung galaxy A7 lite (wifi only)?
I am checking this problem in a following way: I upload app bundle then I save it. Before publishing I go to device catalogue to check the supported devices for the same app bundle. And there I see an error.
My AndroidManifest permissions and features:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<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-feature
android:name="android.hardware.camera"
android:required="false"
tools:node="replace"/>
<uses-feature
android:name="android.hardware.camera.autofocus"
android:required="false"
tools:node="replace"/>
<uses-feature
android:name="android.hardware.telephony"
android:required="false"
tools:node="replace"/>
Merged manifest:
Play console error:
Doesn't support required feature: android.hardware.telephony
This issue is solved. For others I am putting an answer here. It's funny that I just ignored that device catalogue for the saved release and rolled it out directly. That manifest changes started working for the release and play console started showing supported for the device which was unsupported previously. :)

Why google play showing support for just 40 to 45 percent devices

I have searched through the google but could not find any reason why google play showing support for only 45% devices it support to 90 to 92 percent devices on the play store
here my manifest permissions
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission
android:name="android.permission.READ_PROFILE"
android:required="false" />
<uses-permission
android:name="android.permission.READ_CONTACTS"
android:required="false" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.android.vending.BILLING" />
but google play showing some extra permissions am also wondering why play store showing this
Also i have a question that can google play filtering apps on camera flash or flash light availability?
any help will be appreciated thanks
You likely have a library that uses those other features. In particular, it looks as though you have a library that uses the camera and thus adds the camera, microphone, flash, and autofocus features.
You can easily identify the library that is adding these features by looking at the manifest merger report generated by Gradle. This is located at app/build/outputs/logs. The manifest merger report text file there will list out every manifest element pulled in from different manifest files and which file they came from.
If you truly do not require those features, you can declare your own <uses-feature> elements with the android:required attribute set to false.
Please try to add the following to your manifest, please change the required in order of your functionalities:
<uses-feature
android:name="android.hardware.camera"
android:required="true" />
<uses-feature
android:name="android.hardware.camera.autofocus"
android:required="false" />
<uses-feature
android:name="android.hardware.camera.flash"
android:required="false" />
<uses-feature android:name="android.hardware.microphone"
android:required="false" />
<uses-feature android:name="android.hardware.screen.portrait"
android:required="false" />
Also, why is your api lvl 16+? If you switch to 15+ you will have a lot of more devices.

Android App Incompatible on google play only for certain devices

This is the link to my google app
QuizByte
The app was developed for android api level 13 and above. after publishing some of the phones (Samsung Duos(GT-S7262) )which should be compatible cant see the app in google play. sending a direct link to the phone to email and checking shows that 'this device is no compatible'.
I searched and tries everything I can
Tried adding and removed unused permissions but still no luck.
And when I upload it into google play it shows lots of samsung and sony(which should be compatible) in the incompatible-device list.
Thank you.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
.
<uses-feature android:name="android.hardware.location" android:required="false"/>
<uses-feature android:name="android.hardware.location.network" android:required="false" />
<uses-feature android:name="android.hardware.location.gps" android:required="false"/>
<uses-feature android:name="android.hardware.touchscreen" android:required="false"/>
<uses-feature android:name = "android.hardware.screen.portrait" android:required="false"/>
<uses-feature android:name="android.hardware.faketouch" android:required="false" />
.
Compatible devices were increased (~+500) when I added in manifest
But it still shows not compatible with sony and samsung models
Made it working after Changing the minimun SDk Level to 9. Now its showing in the samsung sony devices,
Dont know the exact reson though.Thought that Someone with a similar problem may try this

Android app cannot be downloaded from play store onto tablets

I have an alpha prototype of my app up on the Play Store. For some reason, users with tablets cannot download the app – they get the message "Your device isn't compatible with this version." I haven't had a chance to test multiple tablets, but I know this is a definitely an issue with the Nexus 7.
If I look up the device compatible through the developer's console, I see that tablets such as the Nexus 7 are listed as compatible (and no devices are listed as excluded).
I have also ensured that the tablets that cannot download the app have the latest operating system and thus should not be incompatible because of OS incompatibility.
Does anyone know what might be the issue preventing tablets from downloading my app?
I've included my manifest in case that's helpful.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test.activities"
android:installLocation="auto"
android:versionCode="1"
android:versionName="1.0"
android:windowSoftInputMode="adjustPan" >
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CACHE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="19" />
<application
android:allowBackup="true"
android:hardwareAccelerated="true"
android:icon="#drawable/test_logo"
android:label="#string/app_name"
android:theme="#style/SampleTheme.Light" >
<activity
android:name="com.test.activities.LoginActivity"
android:label="#string/app_name"
android:screenOrientation="portrait" >
</activity>
...
</application>
</manifest>
As a side question, I'm interested in learning how to see whether a device is compatible with your app before you upload a new APK to the play store. I never had an issue testing the app directly on the device, so I was surprised to find it is listed as incompatible on the play store.
I think that it's because of <uses-feature android:name="android.hardware.camera.autofocus" /> (assuming that Nexus 7 doesn't have autofocus). You can add the android:required="false" so the app will be available to devices that don't have autofocus too.
Does anyone know what might be the issue preventing tablets from downloading my app?
RECORD_AUDIO requires that the device have a microphone, and not all tablets will have a microphone.
Also, please remove <uses-permission android:name="android.permission.CACHE" />, since there is no such permission in Android.
As described in the official Tablet App Quality guide:
In your app manifest, locate any <uses-feature> elements. In particular, look for hardware features that might not be available on some tablets, such as:
android.hardware.telephony
android.hardware.camera (refers to back camera), or
android.hardware.camera.front
So, you have to replace these 2 lines:
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.camera.autofocus" />
by this one:
<uses-feature android:name="android.hardware.camera" android:required="false" />
& of course handle the case when the Camera feature doesn't exist in the device by this check:
if (Camera.getNumberOfCameras() > 0){
// device has camera, it is safe to use it here
}
I don't know the exact answer to this, but I do know that Play determines the list of supported devices by THESE numbers:
android:minSdkVersion="11"
android:targetSdkVersion="19"
They should literally be as low as possible in order for your code to work. The lower the number, the longer the compatibility list.
After that, the list of required permissions make a big difference. Because some devices don't have those features that are required. So you have to crossreference that list as well.

application requires feature(s) not available on your device

I have an Android application on Android Market, but some users are complaining about an error shown when the installation starts, just after the download:
One of them sent me a video of this error showing up, and I could see that this error is not caused by the application, but probably in the verification of permission/features process.
As far as I know, this error is just happening on Motorola Droid/Milestone devices running Eclair, it doesn't happen with Froyo. Unfortunately, I don't have access to any device like this one in order to run logcat and check what's going on.
Here are my permission/features on AndroidManifest.xml:
<uses-feature android:name="android.hardware.camera" />
<uses-feature android:name="android.hardware.location" />
<uses-feature android:name="android.hardware.telephony" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
I finally found out what's happening by getting a Droid device and running logcat:
E/PackageManager( 1280): Package com.mycompany.myapp requires unavailable feature android.hardware.telephony; failing!
Motorola Droid devices running Eclair are not able to install applications that declare
<uses-feature android:name="android.hardware.telephony" />
in their manifest. It's very strange, though, because the Android Market should hide it from these devices. This is probably a bug caused by the changes made to the Eclair by Motorola, since it doesn't happen with other devices running Eclair, neither with the same Droid running Froyo.
According to the docs:
Android Market attempts to discover an application's implied feature
requirements by examining other elements declared in the manifest
file, specifically, <uses-permission> elements.
Given that, have you tried removing the uses-feature tags? Since those are implied by the uses-permissions tags, and you aren't using the "android:required" attribute.
The device say " this feature is not available in this device " when I'm installing an app downloaded from play store and i have to give it permission

Categories

Resources