I have an app on Android Market that should run on everything >= Android 1.5. When testing this indeed seems to work, but I get reports from frustrated would be users that they are not allowed to install it due to compatibility issues. Two such are HTC Hero running Android 2.1 and HTC Wildfire (version unknown).
My entire manifest is below (As I don't know what's wrong, I might remove something important) - as I see it, this is the only thing Android Market looks to for compatibility information. Am I somehow excluding certain devices?
<application android:icon="#drawable/icon" android:label="#string/app_name" android:theme="#android:style/Theme.NoTitleBar" android:debuggable="true">
<activity android:name=".ShowStreams" android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN"></action>
<category android:name="android.intent.category.LAUNCHER"></category>
</intent-filter>
</activity>
<activity android:name=".menu.Settings" />
<activity android:name=".ClearCache"></activity>
<activity android:name=".settings.ManageFeeds"></activity>
<activity android:name=".settings.DirectoryBrowser"></activity>
<activity android:name=".settings.SourceSelector"></activity>
<activity android:name=".settings.FlickrBrowser"></activity>
<activity android:name=".settings.PicasaBrowser"></activity>
<activity android:name=".parser.facebook.FacebookAuth">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="floatingimage"/>
</intent-filter>
</activity>
<activity android:name=".settings.FacebookBrowser">
</activity>
<activity android:name=".parser.facebook.WebAuth"></activity>
<activity android:name=".parser.facebook.FacebookAlbumBrowser"></activity>
<activity android:name=".parser.facebook.FacebookFriendsBrowser"></activity>
<activity android:name=".parser.facebook.FacebookFriendView"></activity>
<activity android:name=".flickr.WebAuth"></activity>
<activity android:name=".parser.flickr.FlickrAlbumBrowser"></activity>
<activity android:name=".parser.picasa.PicasaWebAuth"></activity>
<activity android:name=".parser.picasa.PicasaAlbumBrowser"></activity>
<activity android:name=".parser.picasa.PicasaUserView"></activity>
<activity android:name=".settings.About" android:theme="#android:style/Theme.Dialog"></activity>
<activity android:name=".menu.WallpaperSettings" android:exported="true" />
<activity android:name=".menu.ApplicationFeedManagerLauncher"></activity>
<activity android:name=".menu.WallpaperFeedManagerLauncher"></activity>
<service android:name="Wallpaper"
android:label="Floating Image"
android:permission="android.permission.BIND_WALLPAPER">
<intent-filter>
<action android:name="android.service.wallpaper.WallpaperService" />
</intent-filter>
<meta-data android:name="android.service.wallpaper" android:resource="#xml/wallpaper" />
</service>
</application>
<uses-sdk android:minSdkVersion="3" android:targetSdkVersion="4" />
<uses-permission android:name="android.permission.VIBRATE"></uses-permission>
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
<uses-permission android:name="android.permission.SET_WALLPAPER"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission>
<uses-permission android:name="android.permission.BIND_WALLPAPER"></uses-permission>
<uses-permission android:name="android.permission.INTERNET" />
<uses-feature android:name="android.software.live_wallpaper" />
<supports-screens
android:largeScreens="true"
android:anyDensity="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true"
android:resizeable="true" />
</manifest>
After some research, and also asking at #android-dev I found that the problem was with the line:
<uses-feature android:name="android.software.live_wallpaper" />
This is apparently a hard requirement for the app, and not necessary for live wallpaper functionality.
I believe the limiting factor might be the following permission:
<uses-permission android:name="android.permission.BIND_WALLPAPER"></uses-permission>
According to the following page in the android docs, this was introduced in api level 8. Is it possible that the unsupported permission is being filtered out for devices running sdk at api level 7?
http://developer.android.com/reference/android/Manifest.permission.html#BIND_WALLPAPER
Related
I don't understand why, I just try to push a beta version on google play and I have no compatible devices on this version (look at the screenshot). So when I download the apps, it's install me the current production version but not the beta like expected.
I have no problem to install it on my devices on dev mod with android studio so I know that this app working on my phone.
Someone can help me ? Thanks
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.lgondor.simpledice"
>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature android:name="android.hardware.camera2.full" />
<uses-feature android:name="android.hardware.sensor.accelerometer" />
<supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="true">
</supports-screens>
<application
android:allowBackup="true"
android:icon="#drawable/icon_small_shadow"
android:label="#string/app_name"
android:supportsRtl="true"
android:theme="#style/AppTheme">
<activity android:name="com.lgondor.simpledice.MainActivity"
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.lgondor.simpledice.AddCustomDiceActivity"
android:screenOrientation="portrait">
</activity>
<activity android:name="com.lgondor.simpledice.ManageSwitchActivity"
android:screenOrientation="portrait">
</activity>
<activity android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:theme="#android:style/Theme.Translucent" />
<service android:name="com.lgondor.simpledice.services.WearService">
<intent-filter>
<action android:name="com.google.android.gms.wearable.MESSAGE_RECEIVED" />
</intent-filter>
</service>
</application>
</manifest>
I'm using Google Maps in my Android app and I'm seeing the following message on some older devices:
I understand the nature of this message and that updating will resolve this issue.
However I would like to avoid users seeing this all together, and just want the map to load on all devices.
Here's what my dependencies look like:
Please note that I added individual parts of Google Play services that I needed rather than the full library as I started receiving an error from Android Studio about too many lines of code - this was the work around as I just have to many libraries as it seems.
Manifest:
<?xml version="1.0" encoding="utf-8"?>
<uses-sdk android:minSdkVersion="10" android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.android.vending.BILLING" />
<!-- Creating Permission to receive Google Maps -->
<permission android:name="com.xyzapp.it.supportmapfragment.permission.MAPS_RECEIVE" android:protectionLevel="signature"/>
<!-- Permission to receive Google Maps -->
<uses-permission android:name="com.xyzapp.it.supportmapfragment.permission.MAPS_RECEIVE"/>
<!-- Permission to read Google Services -->
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<!--Maps API needs OpenGL ES 2.0. -->
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
<supports-screens
android:anyDensity="true"
android:resizeable="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true" />
<application
android:name=".xyzappitApp"
android:hardwareAccelerated="true"
android:icon="#drawable/app_icon"
android:label="#string/app_name"
android:theme="#style/AppBaseTheme" android:largeHeap="true" >
<activity android:name=".SplashActivity" 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=".TabHostActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:icon="#drawable/app_icon" android:exported="true" />
<activity android:name=".StatusActivity" android:screenOrientation="portrait" />
<activity android:name=".StatusDetailsActivity" android:screenOrientation="portrait" />
<activity android:name=".MyAlertsActivity" android:screenOrientation="portrait" />
<activity android:name=".AlertLinesActivity" android:screenOrientation="portrait" />
<activity android:name=".AlertDetailsActivity" android:screenOrientation="portrait" />
<activity android:name=".PreferencesActivity" android:screenOrientation="portrait" android:theme="#style/ActionBarStyle" />
<activity android:name=".RouteListActivity" android:screenOrientation="portrait" />
<activity android:name=".StopListActivity" android:screenOrientation="portrait" />
<activity android:name=".StopTimesActivity" android:screenOrientation="portrait" />
<activity android:name=".UpgradeActivity" android:screenOrientation="portrait" />
<activity android:name=".TransfersActivity" android:screenOrientation="portrait" />
<activity android:name=".TransfersDetailsActivity" android:theme="#style/MyDialog" android:screenOrientation="portrait" />
<activity android:name=".ShareActivity" android:theme="#style/MyDialog" android:screenOrientation="portrait" />
<activity android:name=".ShareDetailsActivity" android:theme="#style/MyDialog" android:screenOrientation="portrait" />
<activity android:name=".MapActivity" android:configChanges="orientation|keyboardHidden" />
<activity
android:name="com.mopub.mobileads.MoPubActivity"
android:configChanges="keyboardHidden|orientation|screenSize" />
<activity
android:name="com.mopub.mobileads.MraidActivity"
android:configChanges="keyboardHidden|orientation|screenSize" />
<activity
android:name="com.mopub.common.MoPubBrowser"
android:configChanges="keyboardHidden|orientation|screenSize" />
<activity
android:name="com.mopub.mobileads.MraidVideoPlayerActivity"
android:configChanges="keyboardHidden|orientation|screenSize" />
<service android:name=".Service.NotificationService" />
<receiver android:name="com.xyzapp.it.Receiver.MyAlarmReceiver" />
<receiver android:name="com.xyzapp.it.Receiver.ConnectionChangedReceiver" android:exported="false">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
<receiver android:name="com.xyzapp.it.Receiver.BootCompletedReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<uses-library android:name="com.google.android.maps" />
<meta-data android:name="com.crashlytics.ApiKey" android:value="123456" />
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="123456" />
<meta-data android:name="com.google.android.gms.version" android:value="#integer/google_play_services_version" />
<meta-data android:name="com.google.android.gms.analytics.globalConfigResource" android:resource="#xml/global_tracker" />
</application>
Ideally I would like to know how to have the map just load and not force the user to update as my minSDK=10 and the app supports Android 2.3 devices and up.
Even if that means targeting a lower version of Google Play services to support SDK 10+ I'm ok with that solution.
Thanks!
However I would like to avoid users seeing this all together, and just want the map to load on all devices.
Then don't use Maps V2. Instead, use some other mapping solution (e.g., Open Street Map).
Otherwise, there is no "magic" dependency that will avoid this dialog on all devices. While you are welcome to use some older version of that play-services-maps dependency, there is no guarantee that ~1.5 billion devices will all support that particular version of the Play Services engine without any updates.
I have an app that is compatible with my android phone (v 2.2.3) but not with my android tablet (v 4.0+). What can I do to make this app usable on my tablet? The app works on virtual device with settings similar to the real device. This app was created by someone else and he made it available for others to modify. The following is the manifest file...one of them.
<?xml version="1.0" encoding="utf-8"?>
<application android:icon="#drawable/icon" android:label="#string/app_name">
<activity android:name="TaxiDriverMainActivity"
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="EditOrderActivity"></activity>
<activity android:name="ShiftHistoryActivity"></activity>
<activity android:name="TipHistoryActivity"></activity>
<activity android:name="NewOrderActivity"></activity>
<activity android:name="TaxiSettingsActivity"></activity>
<activity android:name="DroppingOffActivity"></activity>
<activity android:name="AddExpenseActivity"></activity>
<activity android:name="ImmediatePickupAcitivty"></activity>
<activity android:name="ShiftStartEndActivity"></activity>
<activity android:name="TaxiDriverMapActivity"></activity>
<activity android:name="OdometerEntryActivity"></activity>
<uses-library android:name="com.google.android.maps" android:required="true"></uses-library>
</application>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
We published the app to Google PlayStore, but it does not seem to show on the PlayStore in latest available version of android (Kit Kat versions 4.4.2-4.4.3 ) on Samsung Galaxy4, HTC One (Model M7 2013) and Google Nexus tablet. However the app is visible on Android phones running Jelly Bean (android version 4.3.1). Here is the entire manifest file.
----------
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xxx.yyyy"
android:versionCode="10" android:versionName="2.0">
<uses-sdk android:minSdkVersion="10"/>
<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.CALL_PHONE" />
<uses-permission android:name="android.permission.SEND_SMS" />
<application
android:icon="#drawable/ic_launcher"
android:debuggable="false"
android:label="#string/app_name" android:name="xxxApp">
<activity
android:label="xxxx"
android:theme="#android:style/Theme.Light"
android:name=".xxxActivity" >
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".favorites"
android:label="Favorites">
</activity>
<activity android:name=".pin"
android:label="Pin">
</activity>
<activity android:name=".registration"
android:label="Registration Form">
</activity>
<activity android:name=".divisions"
android:label="Promotions">
</activity>
<activity android:name=".config"
android:label="Settings">
</activity>
<activity android:name=".resultsearch"
android:label="Result">
</activity>
<activity android:name=".detailstore"
android:label="Info">
</activity>
</application>
</manifest>
I have a problem whith my application on Google Play. In fact my app it's not compatible with custom rom like miui, custom Ics...
For example I can't download my app from google play with my GS2 on miui and my friend can download it with is GS2 on ICS.
Please help me...
here is my manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.notifyme"
android:versionCode="3"
android:versionName="1.0" >
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="true" />
<uses-sdk android:minSdkVersion="8" />
<permission android:name="com.notifyme.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="com.notifyme.permission.C2D_MESSAGE" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.SOUND" />
<uses-permission android:name="android.permission.LIGHTS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:icon="#drawable/notifme_icon"
android:label="#string/app_name" >
<activity
android:name=".HomeActivity"
android:label="#string/app_name"
android:theme="#android:style/Theme.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".ConnexionActivity"
android:windowSoftInputMode="stateHidden"
android:theme="#android:style/Theme.NoTitleBar"/>
<activity android:name=".MainActivity"
android:theme="#android:style/Theme.NoTitleBar"/>
<activity android:name=".InscriptionActivity"
android:windowSoftInputMode="stateHidden"
android:theme="#android:style/Theme.NoTitleBar"/>
<receiver
android:name=".ReceiverActivity"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter >
<action android:name="com.google.android.c2dm.intent.RECEIVE" > </action>
<category android:name="com.notifyme" />
</intent-filter>
<intent-filter >
<action android:name="com.google.android.c2dm.intent.REGISTRATION" ></action>
<category android:name="com.notifyme" />
</intent-filter>
</receiver>
</application>
thank you
I suspect that the problem lay withing your code. One of your activities might has a method that is supported only since API 13 (e.g. Android 3.2 and above). That's why it can be downloaded for newer version (ICS which is android 4) and not your.
double check your methods to figure that out.