google play says my app is incompatible on certain phones - android

I looked up all possibilities for this to be happening, but found no solution. The size of my apk is 7MB, size of the app goes upto 10Mb after installation. I have no bulky files in Raw folder, i have no raw folder at all for that matter. There are no features with requires-true. support all densities is true. support all screens is true. Even then, my app is not listed when searched from some devices, and incompatible on a few other. Why is this happening?
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.myapp.app"
android:versionCode="2"
android:versionName="1.1" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<permission
android:name="com.myapp.app.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="permission_name" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<!--
The following two permissions are not required to use
Google Maps Android API v2, but are recommended.
-->
<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_COARSE_LOCATION" />
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true" />
<!-- <uses-feature -->
<!-- android:glEsVersion="0x00020000" -->
<!-- android:required="false" /> -->
<!-- <uses-feature -->
<!-- android:name="problem feature" -->
<!-- android:required="false" /> -->
<application
android:name="com.application.app.entity.GlobalData"
android:allowBackup="true"
android:hardwareAccelerated="true"
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:largeHeap="true"
android:theme="#style/AppTheme" >
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="#string/api_key" />
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
<activity
android:name="org.application.app.squeakee.HomeActivity"
android:label="#string/app_name"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustNothing" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="org.application.app.squeakee.SqueakeeMapListViewPager"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustNothing" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name="org.application.app.squeakee.ActvityOffersPage"
android:screenOrientation="portrait" />
<activity
android:name="org.application.app.squeakee.MainActivityAlt"
android:screenOrientation="portrait" />
<activity
android:name="org.application.app.squeakee.ListOffers"
android:screenOrientation="portrait" />
<activity
android:name="org.application.app.squeakee.OfferDeatilsActivity"
android:screenOrientation="portrait" />
<activity
android:name="org.application.app.squeakee.MerchantActivity"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="org.application.app.squeakee.ActvityReview"
android:screenOrientation="portrait" >
<intent-filter>
<data
android:host="reviewactvity"
android:scheme="squeekee-reviewactivity" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name="org.application.app.squeakee.ImageDetailActivity"
android:screenOrientation="portrait"
android:theme="#style/AppDialog" />
<activity
android:name="org.application.app.squeakee.GetDirection"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustNothing|stateHidden" >
<intent-filter>
<data
android:host="myactivity"
android:scheme="squeekee-getDirection" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<receiver android:name="com.commonsware.cwac.updater.WakefulReceiver" />
<receiver android:name="org.application.app.constant.AlarmSetter" />
<service android:name="com.commonsware.cwac.updater.UpdateService" />
<service android:name="org.application.app.squeakee.VersionCheckService" />
<service android:name="org.application.app.constant.ServiceSense" />
<activity
android:name="org.application.app.squeakee.ListOffersoffers"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="org.application.app.squeakee.BecomeAnOfferChampActivity"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="org.application.app.squeakee.ProfileActivity"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="org.application.app.squeakee.ActivityFeedback"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="org.application.app.squeakee.ActivityOfferAlerts"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="org.application.app.squeakee.ActivityListOfCategories"
android:screenOrientation="portrait" >
</activity>
</application>
</manifest>

may be you are using fragments some where like in google maps that you used, which make your app incompatible because it does not supported by api version 8.see here for api < 11.
Android - Fragment API for API level < 11
if you are using fragments only in google maps , then you can use supportfragment.
read here too.
http://developer.android.com/training/basics/fragments/creating.html

Related

"C2D_message is not unique" while trying to make sign apk

I'm trying to release an APK and while I'm trying to Generate sign APK I get this error
Error:Error: Permission name C2D_MESSAGE is not unique (appears in both com.company.myApp.permission.C2D_MESSAGE and com.company.myApp2.permission.C2D_MESSAGE) [UniquePermission]
and here is my manifest file:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.company.myApp">
<permission
android:name="com.company.myApp.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<supports-screens android:smallScreens="true" />
<supports-screens android:normalScreens="true" />
<supports-screens android:largeScreens="true" />
<supports-screens android:xlargeScreens="true" />
<supports-screens android:anyDensity="true" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_SECURE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--<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.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="com.company.myApp.permission.MAPS_RECEIVE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.CLEAR_APP_CACHE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<permission
android:name="com.company.myApp.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.company.myApp.permission.C2D_MESSAGE" />
<!-- App receives GCM messages. -->
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<!-- GCM requires a Google account. -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<!-- Keeps the processor from sleeping when a message is received. -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<application
android:name="com.company.myApp.TruckApplication"
android:allowBackup="true"
android:icon="#drawable/myApp_logo"
android:label="#string/app_name"
android:largeHeap="true"
android:sharedUserId="android.uid.system"
android:theme="#style/AppTheme" >
<uses-library android:name="com.google.android.maps" />
<activity
android:name="com.company.myApp.Authenticate_user_Activity"
android:label="#string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.company.myApp.Login_Activity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.company.myApp.SubmitWaiver_Activity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.company.myApp.PrepStopChoice"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait" >
</activity>
<!--<activity-->
<!--android:name="com.company.myApp.Surveyold_Activity"-->
<!--android:configChanges="keyboardHidden|orientation|screenSize"-->
<!--android:screenOrientation="portrait" >-->
<!--</activity>-->
<activity
android:name="com.company.myApp.GetStops_Activity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.company.myApp.Load_Activity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.company.myApp.AddComment_Activity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize" >
</activity>
<activity
android:name="com.company.myApp.StopDetail_Activity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.company.myApp.CaptureImage_Activity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.company.myApp.Survey_Activity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.company.myApp.GetDirection_Activity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.company.myApp.Map_FragmentActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.company.myApp.TabBar"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.company.myApp.ShowStopList_Activity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.company.myApp.PrepActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="landscape" >
</activity>
<activity
android:name="com.company.myApp.TransprentActivity"
android:noHistory="true"
android:screenOrientation="portrait"
android:theme="#android:style/Theme.Translucent.NoTitleBar"
android:windowSoftInputMode="stateHidden|adjustPan" >
</activity>
<receiver
android:name="com.google.android.gcm.GCMBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.company.myApp" />
</intent-filter>
</receiver>
<service android:name="com.myApp.Service.SyncService" >
</service>
<receiver android:name="com.myApp.BrodcastReciver.NetworkStateReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
<receiver android:name="com.company.myApp.RepeatingAlarmService" />
<receiver android:name="com.company.myApp.RepeatingAlaramCommunication" />
<receiver android:name="com.company.myApp.ReaptingAlramNewStops" />
<service android:name="com.myApp.Service.LogoutService" >
</service>
<service android:name="com.myApp.Service.CallNewStop_Service" >
</service>
<service android:name="com.myApp.Service.CheckingGooglePlayVersionService" >
</service>
<receiver
android:name="com.myApp.BrodcastReciver.DateTimeChangeReceiver"
android:enabled="true"
android:exported="false" >
<intent-filter>
<action android:name="android.intent.action.DATE_CHANGED" />
</intent-filter>
</receiver>
<!-- Start the Service if applicable on boot -->
<receiver android:name="com.myApp.BrodcastReciver.PhoneReStartReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<service
android:name="com.company.myApp.TruckLocationUpdateService"
android:enabled="true" />
<service
android:name="com.company.myApp.TruckCommubicationcountService"
android:enabled="true" />
<service android:name="com.company.myApp.GCMIntentService" />
<service android:name="com.company.myApp.HandleNotification" />
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyB6Ae82d_eLZ1nMYIW7EaaQ3-2-Xn7duHs" />
<!-- android:value="AIzaSyAkZzWl6FSP89yWf7VeX6ooYvd6SuRnV4E" /> -->
</application>
<!--<uses-permission-->
<!--android:name="android.permission.ACCESS_MOCK_LOCATION"-->
<!--android:required="false" />-->
<uses-feature
android:name="android.hardware.camera.autofocus"
android:required="false" />
<uses-permission
android:name="android.permission.FLASHLIGHT"
android:permissionGroup="android.permission-group.HARDWARE_CONTROLS"
android:protectionLevel="normal"
android:required="false" />
</manifest>
anyone has an idea whats wrong with this ? I have tried changing uses-permission to permission, where it had C2D_ it didn't work.
You may refer with this post.
Remove
<uses-permission android:name="${applicationId}.permission.C2D_MESSAGE"/>
<permission
android:name="${applicationId}.permission.C2D_MESSAGE"
android:protectionLevel="signature"/>
Run App then add the permisson again and Run App.
This problem often occurs when you try to install debug and release version of your app on the same device.

After use cwac-cam2 library, I can't install my app from Play Store in Nexux 7

I have added the cwac-cam2 library to my project and I uploaded it in the play store. All seems to be good, but when I look my app in the play store from a nexus 7, the app says that isn't compatible with my device. Have you ever had a similar issue? I've read that could be the android permissions, but I didn't add new permissions. This is my AndroidManifest file.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.waiter.android"
xmlns:tools="http://schemas.android.com/tools">
<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.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-feature android:name="android.hardware.telephony" android:required="false" />
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
<uses-sdk tools:overrideLibrary="com.commonsware.cwac.cam2, com.github.clans.fab" />
<application
android:name="com.waiter.android.WaiterApplication"
android:allowBackup="true"
android:hardwareAccelerated="true"
android:largeHeap="true"
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#style/AppTheme" >
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="#string/facebook_app_id"/>
<meta-data
android:name="AA_DB_NAME"
android:value="waiter.db" />
<meta-data
android:name="AA_DB_VERSION"
android:value="3" />
<activity
android:name="com.waiter.android.HomeActivity"
android:label="#string/app_name"
android:alwaysRetainTaskState="true"
android:screenOrientation="sensorPortrait"
android:windowSoftInputMode="stateHidden">
</activity>
<activity
android:name="com.waiter.android.CommentsActivity"
android:label="#string/app_name"
android:alwaysRetainTaskState="true"
android:screenOrientation="sensorPortrait"
android:windowSoftInputMode="stateHidden" >
</activity>
<activity
android:name="com.waiter.android.SplashActivity"
android:label="#string/app_name"
android:alwaysRetainTaskState="true"
android:screenOrientation="sensorPortrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.commonsware.cwac.cam2.CameraActivity"
android:theme="#style/AppTheme"
android:process=":cwac_cam2"/>
<!-- Google Tag Manager Preview Activity -->
<activity
android:name="com.google.tagmanager.PreviewActivity"
android:label="#string/app_name"
android:noHistory="true" > <!-- Optional, removes the PreviewActivity from activity stack. -->
<intent-filter>
<data android:scheme="tagmanager.c.com.waiter.android" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
</activity>
<activity android:name="net.hockeyapp.android.UpdateActivity" />
<!--Facebook login Activity-->
<activity android:name="com.facebook.FacebookActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:theme="#android:style/Theme.Translucent.NoTitleBar"
android:label="#string/app_name"/>
</application>
Thanks!

Cannot install application in Android Tablet

I am using Android Studio to develop an app which used Camera2 API. I can run the app in Google Nexus 9, however the app is not installed in the device and I cannot access it once I close the app. What am I doing wrong ?
Here is the manifest
<?xml version="1.0" encoding="utf-8"?>
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera2.full" />
<uses-permission android:name="com.example.mapdemo.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<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="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<application
android:allowBackup="true"
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#style/AppTheme" >
<activity
android:name=".MapActivity"
android:label="#string/app_name" >
<intent-filter>
<action android:name="android.intent.action.map" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:label="#string/app_name" >
<intent-filter>
<action android:name="test.camera.main" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="key"/>
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
</application>
add the following to your < activity > in your AndroidManifest.xml
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
EDIT: added sample
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mycompany.android.myapp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="21" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#style/Theme.AppCompat" >
<activity
android:name=".ActFirst"
android:label="#string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".ActSecond" >
</activity>
</application>
</manifest>
While running my app, I thought I had the same problem.
The problem in my app was the app_name in the strings file was different that what I thought it is. So Basically I was looking for app "X" while the name i gave is "Y".
Maybe you have the same problem.

Google Play Store - Find out why a device is incompatible

I published an android app in google playstore. Some clients complain about not being able to download the app as the play stores says it is "not compatible".
In google developer console, I can only see THAT a device is not supported. I want to know WHY a device is incompatible but that information is hidden from me.
Google has to have this information to determine compatibility, why is there no way to show this information to developers? Or am I wrong?
We'd really appreciate that feature, it is vital I think.
One device that fails, is for example: medion lifetab e10315
http://www.amazon.de/Medion-LIFETAB-Tablet-PC-Android-schwarz/dp/B00HA4M91W
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.example.changed.android2"
android:installLocation="auto"
android:versionCode="1"
android:versionName="xxx" >
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="18" />
<!-- Only this application can receive the messages and registration result -->
<permission
android:name="de.example.changed.android2.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<permission
android:name="de.example.changed.android2.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<!-- Required permission to check licensing. -->
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />
<uses-permission android:name="de.example.changed.android2.permission.MAPS_RECEIVE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<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" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="de.example.changed.android2.permission.C2D_MESSAGE" />
<uses-permission android:name="android.permission.READ_LOGS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--in app paying-->
<uses-permission android:name="com.android.vending.BILLING" />
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true" >
</supports-screens>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-feature
android:name="android.hardware.camera"
android:required="false" />
<uses-feature
android:name="android.hardware.camera.autofocus"
android:required="false" />
<uses-feature
android:name="android.hardware.telephony"
android:required="false" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="false" />
<!-- suppress AndroidDomInspection -->
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:label="Tests for xxx"
android:targetPackage="de.example.changed.android2" />
<android:uses-permission android:name="android.permission.READ_PHONE_STATE" />
<application
android:name=".xxxApp"
android:allowBackup="false"
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#style/Theme.xxx" >
<uses-library android:name="com.google.android.maps" />
<uses-library android:name="android.test.runner" />
<receiver
android:name=".services.C2DMReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="de.example.changed.android" />
</intent-filter>
<intent-filter>
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="de.example.changed.android" />
</intent-filter>
</receiver>
<receiver android:name=".services.NetworkChangeReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
<receiver android:name=".services.SMSReceiver" >
<intent-filter android:priority="9999" >
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
<activity
android:name=".ui.RegistrationActivity"
android:label="#string/app_name" >
</activity>
<activity
android:name=".ui.MapActivity"
android:configChanges="orientation|screenSize|keyboardHidden" />
<activity
android:name=".ui.SettingsActivity"
android:configChanges="orientation|screenSize" />
<activity
android:name=".ui.GroupsEdit"
android:parentActivityName=".ui.GroupsList" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="de.example.changed.android2.ui.GroupsList" />
</activity>
<activity
android:name=".ui.GroupsList"
android:parentActivityName=".ui.AlertListActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="de.example.changed.android2.ui.AlertListActivity" />
</activity>
<activity
android:name=".ui.AlertListActivity"
android:exported="true" />
<activity android:name=".ui.HelpActivity" />
<activity
android:name=".ui.AlertDetailActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
android:parentActivityName=".ui.AlertListActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="de.example.changed.android2.ui.AlertListActivity" />
</activity>
<activity
android:name=".ui.AlertPopupActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
android:noHistory="true" >
</activity>
<activity
android:name=".services.helper.test.EncryptionTest"
android:label="#string/title_activity_encryption_test" >
</activity>
<activity
android:name=".services.helper.test.EncryptionClientTest"
android:label="#string/title_activity_encryption_client_test" >
</activity>
<activity
android:name=".ui.BlockedAlertListActivity"
android:label="#string/title_activity_blocked_alert_list" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="de.example.changed.android2.ui.AlertListActivity" />
</activity>
<activity
android:name=".ui.StartActivity"
android:label="#string/app_name"
android:noHistory="true" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".ui.FeedbackCustomTextActivity"
android:windowSoftInputMode="stateUnchanged" />
<!-- Widgets -->
<receiver
android:name=".ui.Widget"
android:label="#string/widget_title" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<intent-filter>
<action android:name="de.example.changed.android2.ui.Widget.WIDGET_CLICK" />
</intent-filter>
<intent-filter>
<action android:name="de.example.changed.android2.ui.Widget.WIDGET_UPDATE_UI" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="#xml/widget_provider" />
</receiver>
<!-- Services -->
<!-- Provider -->
<provider
android:name=".provider.FilterProvider"
android:authorities="de.example.changed" >
</provider>
<activity android:name=".ui.FeedbackOverviewActivity" >
</activity>
<activity
android:name=".ui.ProfileListActivity"
android:label="#string/title_activity_profile_list"
android:parentActivityName=".ui.GroupsList" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="de.example.changed.android2.ui.GroupsList" />
</activity>
<activity
android:name=".ui.ProfileEditActivity"
android:label="#string/title_activity_profile_edit" >
</activity>
<activity
android:name=".billing.BillingActivity"
android:label="#string/title_activity_billing" >
</activity>
</application>
</manifest>
remove android:targetSdkVersion="18"

Android phones below a certain api level cannot see the play store listing

I have hosted my app on the Google Play Store. Most phones can go to the store and download it successfully. Certain phones can not see the listing, these phones are running Android 2.3.6.
I've a feeling that the target api in the manifest may have something to do with it?
This is what i have in my manifest.
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="11" />
.
All the phones on 4.x are fine.
Why can't lower Android phones see the listing?
Thanks.
[edit]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.carefreegroup.rr3"
android:versionCode="24"
android:versionName="3.0.2"
android:installLocation="internalOnly"
>
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="11"
/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- <uses-permission android:name="android.permission.NFC" /> -->
<permission
android:name="com.carefreegroup.rr3.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="com.carefreegroup.rr3.permission.C2D_MESSAGE" />
<uses-feature
android:name="android.hardware.nfc"
android:required="true" />
<!-- App receives GCM messages. -->
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<!-- GCM requires a Google account. -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<!-- Keeps the processor from sleeping when a message is received. -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.PREVENT_POWER_KEY" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"></uses-permission>
<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.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-feature android:name="android.hardware.camera" />
<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.screen.landscape" />
<uses-feature
android:name="android.hardware.wifi"
android:required="false" />
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<!-- Donut-specific flags which allow us to run on any dpi screens. -->
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true" />
<application
android:name=".NfcScannerApplication"
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#android:style/Theme.Light"
android:debuggable = "false" >
<uses-library android:name="com.google.android.maps" />
<activity
android:name=".NfcscannerActivity"
android:screenOrientation="portrait"
>
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
<intent-filter>
<action android:name="com.carefreegroup.rr3.QRCODE_ACTION" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
<intent-filter>
<action android:name="android.nfc.action.TECH_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data
android:name="android.nfc.action.TECH_DISCOVERED"
android:resource="#xml/nfc_tech_filter" />
</activity>
<activity
android:name=".EntryActivity"
android:label="#string/app_name"
android:screenOrientation="portrait"
android:launchMode="singleTask" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".LoadTransactionsMap" />
<activity
android:name=".ViewTransactions"
android:screenOrientation="portrait" />
<activity
android:name=".LoginValidate"
android:screenOrientation="portrait" />
<activity
android:name=".ViewTransactionsTest"
android:screenOrientation="landscape" />
<activity
android:name=".NfcBaseActivity"
android:screenOrientation="portrait" />
<activity android:name=".CaptureActivity" >
<intent-filter>
<action android:name="com.carefreegroup.rr3.SCAN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".ViewQrCodes"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".ValidateUser"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".ReportSomething"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" >
</activity>
<activity
android:name=".GetClientDirections"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".ViewPhoneNumbers"
android:launchMode="singleTop"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".GetRota"
android:launchMode="singleTask"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".GetRotaDetails"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".ShowMoreDetails"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".ReplyToMessageActivity"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".ViewMessagesActivity"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".SendStandaloneMessageActivity"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".RecordActivity"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".DisplayMessageActivity"
android:screenOrientation="portrait"
android:theme="#android:style/Theme.Dialog" >
</activity>
<activity
android:name=".MessageRecipientActivity"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".CachedRotaActivity"
android:screenOrientation="portrait" >
</activity>
<activity
android:name=".EmailLog"
android:screenOrientation="portrait" >
</activity>
<service android:name=".SendOutstandingTransactionsIntentService" />
<service android:name=".QueryService" />
<service android:name=".LocationService" />
<service android:name=".SignalService" />
<service
android:name=".SendOutstandingTransactions"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="com.carefreegroup.rr3.startatboot.MyService" />
</intent-filter>
</service>
<receiver
android:name="AlarmReceiver"
android:process=":remote" >
</receiver>
<service
android:name=".DeleteDuplicateTXTableService"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="com.carefreegroup.rr3.startatboot.DupTXService" />
</intent-filter>
</service>
<receiver
android:name="DuplicateTXReceiver"
android:process=":remote" >
</receiver>
<service android:name=".EmailLog" />
<service android:name=".GCMIntentService" />
<receiver android:name="com.google.android.gcm.GCMBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<action android:name="com.google.android.c2dm.intent.REGISTRATION" />
<category android:name="com.carefreegroup.rr3" />
</intent-filter>
</receiver>
</application>
NFC was added in API Level 10. More importantly, few API Level 10 and below devices have NFC hardware. You are requiring that devices have NFC hardware; ergo, you will not have very many API Level 10 and below devices that support your app.
If you do not absolutely need NFC to function, use android:required="false", and check for NFC availability at runtime, either via PackageManager and hasSystemFeature(), or just whether you can get your NfcAdapter.
In addition:
You will only be available for devices that have Maps V1, and I would imagine that some newer devices will start dropping support for that, since Maps V1 has been deprecated for a year.
You are wasting CPU and memory with those :remote receivers
There is no PREVENT_POWER_KEY permission in Android

Categories

Resources