There is an application which can not be runed on particular devices. I have this in Manifest.xml:
<uses-sdk android:minSdkVersion="8" />
And it works on HTC sensation with Android 4.0, but for some reason it is not compatible with Samsung Galaxy Tablet 2 7.0. (Android 4)
When I upload it in Android market, also I can see that the Tablet is not supported.
I can not understand the reason, can you please let me know why?
Manifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
android:installLocation="auto"
package="test.newversion"
android:versionCode="1"
android:versionName="2.0" >
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.INTERNET" />
<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_MOCK_LOCATION" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:icon="#drawable/app_logo"
android:label="#string/app_name" >
<uses-library android:name="com.google.android.maps" />
</application>
</manifest>
Some permissions implicitly add requirements on the hardware. For example the docu for CAMERA says:
This will automatically enforce the manifest element for all camera features. If you do not require all camera features or can properly operate if a camera is not available, then you must modify your manifest as appropriate in order to install on devices that don't support all camera features.
If you don't need all, add explicit uses-feature elements with android:required="false"
try to give a luck to the following in manifest if not yet added
<supports-screens android:smallScreens="false"
android:normalScreens="true" android:largeScreens="true"
/>
change it according to your criteria
Most likely it is the permissions that are creating a filter which makes the marketplace removes some Tablets.
For e.g. you have the PHONE permissions in your manifest and if the Tablets do not have a phone capability, then they will not be compatible. As Henry suggested, you might look at the uses-feature with the android:required="false".
I suggest you review the AndroidManifest.xml carefully and proceed from there.
Related
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?
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
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.
I've published my app on google playstore, the app is now visible to phones, but I cannot see it with my tablet(Nexus /). Here is my manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.application.myapp"
android:versionCode="3"
android:versionName="2.0" >
<uses-sdk
android:minSdkVersion="4"
android:targetSdkVersion="13" />
<supports-screens
android:anyDensity="true"
android:xlargeScreens="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"/>
<uses-permission android:name="android.permission.WRITE_APN_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="#drawable/ic_launcher"
android:label="#string/app"
android:supportsRtl="true" >
<activity.......>
</activity>
</application>
</manifest>
How can I make it visible to tablets?
This Stack Overflow question is very similar to yours. It suggests that besides screen sizes, you should make sure that your permissions and features are all things that the particular device can use. (For example, setting the camera feature would cause devices without cameras to be excluded.)
Manifest and supported devices showed in Android market - Stack Overflow
I am pretty sure it's the WRITE_APN_SETTINGS permission. Requesting it only worked on older devices, nowadays (>= Android 4.0 I think) it is only granted to system apps.
Is there anywhere that I can find a list of the Features that the Xoom has, so that I can update my manifest file accordingly.
Currently the application is not in the Market, and Im not sure what is hindering it.
These are the current Permissions :
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="8" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
Thanks
If you are planning to run your application on Android 3.1 then you should set the targetSdkVersion to 12. This may be what's preventing it from showing up in the market. The documentation on targetSdkVersion is not very clear on this, but it's worth a try I suppose. http://developer.android.com/guide/topics/manifest/uses-sdk-element.html