I have recently launched my application into the Google Play store but unfortunately some users are unable to download the application due to market restrictions.
Users are able to install the apk directly without the market, so I guess it must be something to do with the manifest?
<uses-sdk android:minSdkVersion="11" android:targetSdkVersion="14" />
<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.VIBRATE"/>
The application can be found here http://tinyurl.com/cnejnjs
Screen layouts: SMALL NORMAL LARGE XLARGE
Required device features
android.hardware.touchscreen
This application is available to over 185 devices.
For example one user has had trouble downloading it to his Galaxy Note.
The Galaxy Note runs Android 2.3.6, which is API Level 10. You are mandating at least API Level 11.
It turns out having Copy Protection set to on within the application was causing this issue.
Related
I have built one android application and uploaded in playstore. Few devices most probably which are not having gps are not able to download from playstore. Playstore saying "your device isn't compatible with this version".
I am using
the following permission and features
<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.gps" />
I didn't make the feature required=true, so far I know if don't mention required=true then it will not prevent devices to download which are not having such features.
For your information, manually I am able to install the apk to the same device. Your help is highly appreciated.
I built an application that uses the following permissions:
<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.RECORD_AUDIO" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
When i try to install it manually on my android device (Android version 6.0.1) i get the following message:
Do you want to install this application? it does not require any special access.
But in fact it does require some special accesses, by the way, when i test on Devices with android 5.1 and prior, i was shown the permissions and asked to accept them.
this is a problem because i have to manually toggle the permissions on in the android settings in application management when on android 6.0.1 so the application works normally.
is there anything i have to add to my code to fix the issue for android 6+ ?
Another strange issue i noticed, at the page of my application on Playstore (close alpha testing for now) i get the following message in Permission details under developer section:
Item not found.
and this i get only on my android 6.0.1 device, and not in devices with prior versions.
Because the android M permission handle it differently, you need to ask the permissions at runtime
Take a look here :
https://developer.android.com/training/permissions/requesting.html
You need to ask for permissions at runtime in android 6+. This is the reason why no permission is asked when you are installing your application like its asking in android lollipop. Visit android developer page to learn how to ask for permission for android M and above visit : https://developer.android.com/training/permissions/requesting.html
I've got an Android App on Google Play and when installing it, it says it has the Persmission "System Tools - test access to protected storage. Allows the app to test a permission for USB storage that will be availavle on future devices".
I don't really understand that permission and I don't know which permission in my manifest activates this.
I use following permissions in my manifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
ANDROID:It has added a new permission that needs to be added for jelly bean. Please read this article for more details:
http://www.androidguys.com/2012/06/29/jelly-bean-has-new-permission-option-to-read-external-storage/
There is a new developer option to turn on read access restriction, for developers to test their applications against how Android will behave in the future. So, when you hop into the development options on your Jelly Bean device, don’t be surprised to see this new option. We won’t see the permission in Android 4.1.0, but most likely in 4.1.1, and its intention is to keep your device more secure.
Currently this permission is not enforced and is used for testing on devices that have enabled Protect USB storage under Developer options in the Settings app on a device running Android 4.1 or higher.
I am developing an application and my application is installed and tested successfully on emulator and lots of devices like Asus eee pad, Galaxy tab, Galaxy note, HTC …
But I can not install it on Pidion BM-170 with android 2.3.7 and get error "Application not installed"
I tested other applications on this device and they are installed successfully. So the problem is about my application and this Pidion device.
I have signed my application.
I have tested putting android:installLocation="auto" in manifest.
I have tested Debuggable=false and true in manifest.
There is no previous application on device.
But I still get error "Application not installed".
I use these features in my application
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
Why I get this error? How can I solve it?
Perhaps that device does not have the Google Maps SDK add-on library. After all, according to the device manufacturer, it does not even have Android normally -- it is described as "optional". They probably did not license the Google commercial apps, such as Play Store, YouTube, Google Maps, etc. If so, you cannot write apps that rely upon the Google Maps SDK add-on library that will run on that device.
Here is the stuff that matters from my Android App Manifest file. I am looking at supporting Android API Level 4 and above with target = 14 supporting all screens.
Developer console shows
API level: 4-16+
Supported screens: small-xlarge
OpenGL textures: all
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_UPDATES" />
<uses-permission android:name="android.permission.WIFI_CHANGE_STATE"/>
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="14"/>
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="true" />
Here is the Google Play App link
Here are the device details for the Device from which when I go to Google Play my App shows incompatible.
Motorola DROID Bionic
Android Vs 4.0.4
Verizon Wireless CDMA
System Version 6.7.230.XT875.Verizon.en.US (Leaked ICS Build for DROID Bionic)
Build Number 6.7.2-223
I have tried turning Copy Protection On/Off from Google Play but same result.
I am unable figure out what is causing this incompatibility with my app and device because Google Play Publishing shows this Device is supported by my release apk.
Is there any chance that me using a leaked ICS build for the Bionic has anything to do with it? It would be very helpful if anyone with 4.0.4 or (Android device running any version of ICS) can try to download the app from Google Play and see if the App is incompatible with their device too or its just me. Other than that suggestions on a way to fix this would be tremendously helpful.
Thanks so much.
Update: I am using two SDKs with my App - Flurry SDK and Skyhook Wireless SDK jar files both of which are compatible with Android 4.0. Also I have added Android Support Library and compiled the codebase against Android 4.0.3 and the App still is incompatible with the device and build mentioned above running Android v 4.0.4
Problem Solved!
First of all there is nothing wrong in the Manifest or the version of Android SDK I compiled the code base against which is Android 4.1.
I could search for and install the App when I turned Copy Protection OFF from Google Play developer console and waited 30 minutes to 1 hour for the new copy protection setting to take effect. The key here is that after changing the Copy Protection settings you have to wait. This does not take effect immediately.
Previously Copy Protection was ON for Tooyoou and after I wrote to Android developer support I got the clue in their reply email as below.
If your app no longer appears in Google Play after enabling Copy Protection, please note that our copy protection relies on being able to trust the build of Android that the app is installed on. Therefore, we only show copy-protected apps to known good builds of Android. If a specific port of Android is not a known good build (e.g. some “Custom ROMs”) or the device is rooted, Google Play will not display copy-protected apps to these devices. If the users switch to an official version of Android, they'll be able to see your application again.
Since I am running a custom unreleased ROM on my DROID BIONIC this is what caused the issue. Stock ASOP ICS and Jelly Bean devices were able to download and install the app even when Copy Protection was ON. Copy Protection is a bit tricky for Paid App but since Tooyoou is free there is not much to care about.
Also note Copy Protection is supposedly being deprecated soon and Licensing feature in the Android SDK is the way to go for Paid App copy protection.
have you tried adding android:xlargeScreens="true" to support-screens?