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"
Related
I have a problem.
I have a signed apk generated and installed but
I can't start the App from installing and I can't see it in the app menu.
I can only see it in the settings app menu.
Why cant I see it or starting?
The app can be started via the debugger.
Can you help me?
The operating system is Android 7 and 5.
Here is my manifesto:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.xxxxxx"
android:versionCode="12"
android:versionName="4.0.0">
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.NFC"/>
<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.WAKE_LOCK" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_PROFILE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CLEAR_APP_CACHE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS" />
<uses-permission android:name="com.android.browser.permission.WRITE_HISTORY_BOOKMARKS" />
<uses-permission android:name="android.permission.SET_WALLPAPER" />
<uses-feature
android:name="android.hardware.camera"
android:required="true" />
<uses-feature
android:name="android.hardware.camera.front"
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.screen.portrait"
android:required="true" />
<uses-feature
android:name="android.hardware.wifi"
android:required="false" />
<uses-feature
android:name="android.hardware.touchscreen"
android:required="true" />
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true" />
<application
android:name="com.control.xxxx.xxxxx"
android:allowBackup="true"
android:hardwareAccelerated="false"
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:largeHeap="true"
android:persistent="true"
android:theme="#style/AppTheme">
<!-- Activities -->
<activity
android:name=".MainActivity"
android:label="#string/app_name"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="text/plain"/>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".ScannerActivity"
android:label="#string/title_activity_qrcode_scanner"
android:noHistory="true"
android:screenOrientation="portrait" />
<activity
android:name=".HelpActivity"
android:label="#string/help_title"
android:noHistory="true"
android:screenOrientation="portrait"
android:theme="#android:style/Theme.Holo" />
<activity
android:name="com.control.installation.ConfigActivity"
android:label="#string/install_title"
android:screenOrientation="portrait"
android:theme="#android:style/Theme.Holo"
android:windowSoftInputMode="stateHidden|adjustPan" />
<activity
android:name=".CameraHideActivity"
android:label="#string/title_activity_camera_hide"
android:noHistory="true"
android:screenOrientation="portrait" />
<activity
android:name=".ProjectListActivity"
android:label="#string/title_activity_project_list"
android:noHistory="true"
android:screenOrientation="portrait" />
<activity
android:name="com.control.camerahidetexts.CamHideConfiguratorActivity"
android:label="#string/title_config_hideactivity"
android:noHistory="true"
android:screenOrientation="portrait"
android:theme="#android:style/Theme.DeviceDefault.Dialog" />
<activity
android:name="com.control.personalmessages.PersMsgActivity"
android:label="#string/pm_title"
android:noHistory="true"
android:screenOrientation="portrait" />
<activity
android:name="com.control.language.LanguageActivity"
android:label="#string/title_languageactivity"
android:noHistory="true"
android:screenOrientation="portrait"
android:theme="#android:style/Theme.DeviceDefault.Dialog" />
<activity
android:name=".ButtonActivity"
android:label="#string/button_settings"
android:screenOrientation="portrait"
android:theme="#android:style/Theme.Holo" />
<!-- Receivers -->
<receiver android:name="com.control.personalmessages.PersMsgReceiver" />
<receiver android:name="com.control.broadcastreceiver.AppRestartReceiver" />
<receiver android:name="com.control.camerahidetexts.CamHideConfigTextsReceiver" />
<receiver android:name="com.control.livepackets.LivepaketReceiver" />
<receiver android:name="com.control.projecttransponderlists.ListUpdateReceiver" />
<receiver android:name="com.control.timestamps.TimestampReceiver" />
<receiver android:name="com.control.projecttransponderlists.ListUpdateDoneReceiver" />
<receiver android:name="com.control.log.LogReceiver" />
<receiver android:name="com.control.broadcastreceiver.BootUpReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<!-- Services -->
<service android:name="com.control.personalmessages.SetPersonalMessagesToReadService" />
<service android:name="com.control.personalmessages.DownloadPersMsgService" />
<service android:name="com.control.personalmessages.FinishPMDownloadService" />
<service android:name="com.control.camerahidetexts.CamHideConfigTextsService" />
<service android:name="com.control.projecttransponderlists.ProjectListService" />
<service android:name="com.control.projecttransponderlists.TransponderListService" />
<service android:name="com.control.projecttransponderlists.LinkTransponderProjectListService" />
<service android:name="com.control.projecttransponderlists.ListUpdateService" />
<service android:name="com.control.projecttransponderlists.ListUpdateDoneService" />
<service android:name="com.control.timestamps.TimestampService" />
<service android:name="com.control.log.LogSendService" />
<service android:name="com.control.livepackets.LivepaketService" />
</application>
Update
i found the problem, it was android:mimeType but why?
Can you explain it to me?
You probably forgot launch mode. Write this in your AndroidManifest.xml inside application element
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
replace .MainActivity with your activity name
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.
I just trying to publish my android app, I signed my application from my keystore, but Google Play console displaying me supported devices is zero. I am using Android SDK only for my app. Any reason why this so ??
Android Manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.info.android"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="com.android.browser.permission.READ_HISTORY_BOOKMARKS" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.WRITE_CALL_LOG" />
<uses-feature
android:name="android.harware.telephony"
android:required="true" />
<application
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#style/AppTheme" >
<!-- Activities -->
<activity
android:name="com.info.SplashActivity"
android:clearTaskOnLaunch="true"
android:launchMode="singleTask"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.info.Terms"
android:label="#string/terms_title"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.info.SetPin"
android:label="#string/set_pin_title"
android:screenOrientation="portrait" />
<activity
android:name="com.info.AddEditBuddy"
android:label="#string/manage_friends_title"
android:screenOrientation="portrait" />
<activity
android:name="com.info.Login"
android:finishOnTaskLaunch="true"
android:label="#string/login_title"
android:screenOrientation="portrait" />
<activity
android:name="com.info.Backup"
android:label="#string/backup_title"
android:screenOrientation="portrait" />
<activity
android:name="com.info.RestoreActivity"
android:label="#string/restore_title"
android:screenOrientation="portrait" />
<activity
android:name="com.info.ClearData"
android:label="#string/clear_data_title"
android:screenOrientation="portrait" />
<activity
android:name="com.info.Settings"
android:label="#string/setting_title"
android:screenOrientation="portrait" />
<activity
android:name="com.info.StolenMode"
android:label="#string/stolen_setting_title"
android:screenOrientation="portrait" />
<activity
android:name="com.info.AppPin"
android:label="#string/apppin_setting_title"
android:screenOrientation="portrait" />
<activity
android:name="com.info.Lock"
android:excludeFromRecents="true"
android:label="#string/lock_title"
android:launchMode="singleTask"
android:screenOrientation="portrait" />
<activity
android:name="com.info.Home"
android:label="#string/home_title"
android:screenOrientation="portrait" >
</activity>
<activity
android:name="com.info.SMSCommands"
android:label="#string/title_activity_smscommands" >
</activity>
<activity
android:name="com.info.FileExplore"
android:label="#string/restore_title" >
</activity>
<!-- Receivers -->
<receiver android:name="com.info.BasicFuzz" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>
<receiver android:name="com.info.IncomingSMSReceiver" >
<intent-filter android:priority="2147483647" >
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
<!-- Services -->
<service android:name="com.info.ResetService" />
<service android:name="com.info.SmartFuzzService" />
<service android:name="com.info.GPSLocationService" />
</application>
</manifest>
Missing a char 'd' in uses-feature android:name="android.harware.telephony"
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
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