Prevent install for specific manufacturer-API combination - android

We use a 3rd party SDK that crashes 100% of the time on Asus devices running Android 7.0 (we can't get rid of the SDK). The same device running 7.1 will not crash. I know I can block specific devices using the Google Play Developer Console, but I'd rather not block the devices since there's a chance that they either haven't updated to 7.0, or they have been updated to 7.1.
I asked Google Play support if there was something I was missing in the console, and they said it's not possible to block a manufacturer-API combination from the dev console. However, they said there was a way to do so using the manifest, but that they weren't qualified to tell me exactly how. I haven't been able to find any information on this. The docs mention how to declare restricted screen support using the manifest, but nothing about a manufacturer.
Does anybody know a way to accomplish this using the manifest?

Related

Google Play app searching filter

I found Google Keep from the Google Play on my device.
However, after reinstalling the Android system, I can not find Google keep from the Google Play and it shows that "Your device is not compatible with this version"
I am very confused for this searching result while the same device ran well with this app before.
I can understand there are several ways to install this app on my device again.
A couple of questions confuse me..
How can I check the features that this app may change in the new version? This may cause the reason why I can not find it in the Google Play.
Will that be any possibility to modify my device source code in order to find this app on the Google Play in my device?
Thanks
I just found that shouldnt the permission(feature) issue because I can find and install other apps which require more permissions than Google Keep.
The permissions that have anything to do with hardware are:
record audio (needs microphone)
precise location (GPS)
control vibration
If your phone has these features and runs Android 4.0 and up, it should be compatible.
I see two possible reasons:
After reinstalling you have an older version of Android. If this is the case, check for updates and after updating it should work
Your device model may have been blacklisted because of compatibility issues. In this case, Google may find a solution in the future and Keep will become available.
You can install Keep anyway, sideloading it. You just have to download the .apk from somewhere (Google it and be careful for malware).

Google Play install error - Missing shared library

I have an app with 100k~ downloads on Play, which I started to develop like a year ago. Back then, it had the default crappy android UI. A month ago, I decided to include the ActionbarSherlock+HoloEverywhere libraries, so it could provide a much better user experience, with the Holo UI. Here comes the problem.
I got a few user reports, that they cannot update, since Play is keep telling them, their device is incompatible with the app. NOTHING changed besides adding and using the above mentioned libraries, so their device SHOULD still be compatible with my app. Here is what I know, and tried so far, including reports from the most helpful user, who cooperates with me, and want to use the app.
his old device broke, so it got replaced, and he couldn't install the updated version
on the new device, he can't install the old versions, which he could on the old device
the mentioned device is an atab5 MTK6577
the minimum API level is currently 8 (Android 2.2)
my app requests the following permissions:
android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_NETWORK_STATE
android.permission.INTERNET
the features the device has to got are the following:
android.hardware.LOCATION
android.hardware.location.GPS
android.hardware.TOUCHSCREEN
I found a nice tool (http://codekiem.com/2013/02/13/market-helper/) , which I asked the user to try if he can trick Play to install the app, he did, and the app finally installed
after the installation, he got a new error message, "Missing shared library", so he still couldn't run the app
after some research, I found that some device may not have proper Google Maps api, or something like that, but it can be fixed by adding Google Apis to the apk, by explicitly adding Google Api to the Build path
I sent him the newly compiled apk, the new error message is: "Application not installed"
the user has problem with more apps, not just mine, typically with apps that uses GPS, and I guess Google Maps too, so it may be a device fault
as a side-note, I am using standard MapActivity, not the ActionbarSherlock mapactivity, but since the problem is there for the old, non-holo version of the app too, it shouldn't matter
Is there any way for me, to solve the issue on my end? I dont really care, if he still won't be able to run another apps, if he can use mine. Of course, if all his problems would be solved, that is the best case, but my priority is, can I add something to my apk? Or, what is the problem here? A corrupted Google Maps?
Thanks in advance, cheers
after the installation, he got a new error message, "Missing shared library", so he still couldn't run the app
This will come from some <uses-library> element in your manifest.
but it can be fixed by adding Google Apis to the apk, by explicitly adding Google Api to the Build path
Um, no, that will not work.
Is there any way for me, to solve the issue on my end?
Other than by switching to something like OpenStreetMap, no.
A corrupted Google Maps?
More likely it is a device (or ROM mod) that has pirated versions of various Google apps, such as Google Maps, and therefore did not set up the Maps SDK add-on properly.

what behaviour will <uses-library /> cause in the android market?

If I set in the Manifest.xml and try to install the .apk with ecclipse, the install fails with a missing library error showing logcat. Thats ok for me as developer.
But how will be the behaviour in Google Play?
Simply writing a failure to logcat is not useful for normal users. Useful would be if an appropriate error dialog would appear, informing the user about the error, why and how to fix it (In this case, ideally a link to the missing app in Google Play, so the user can install the missing app easily)
Does anyone know, how exactly the error is handled, if a user try to install the .apk via android market (or other market places)?
Is there a way to costumise that handling?
But how will be the behaviour in Google Play?
The app will not show up in the Google Play Store, if the device does not have the firmware library you require. Hence, the user will not have an opportunity to install it.
This is covered in the Filters on Google Play section of the docs.
Based on the uses-library documentation you can use reflection to determine if a particular class is available. I haven't done this myself but here is a blog spot in which reflection is used to determine if the device support's live wallpapers Using Reflection to test if an Android device is using 'Live Wallpapers'.
It must not be very hard to adapt it for other libraries.
Also, from API 7 there is a android:required value for tag that allows the application to be installed from Google Play even if the library is not present in the user's device.
Hope this helps...

Prevent app from being installed on Honeycomb

Is there a way to prevent an app from being installed on Android Honeycomb?
I am looking for either a market filter or a manifest option.
According to this discussion on google groups (android-developers list), setting maxSdkVersion="10" will block Honeycomb; however it won't stop a device upgrading to Honeycomb (or force app uninstall) once your app is installed.
In your Android Manifest file, set the uses-sdk tag. Android 3.0 is level 11. Also note, however, that Google explicitly states that they make their code backwards compatible so you don't have to do this. If you have a good reason to, go ahead, but be aware that Google thinks most people should never have to.

Android 2.0 App not available on 2.2 devices

Has anyone seen that their applications built against Android 2.0 (minSdkVersion="5") are not showing up at all in the market for 2.2 devices? Does anyone know a workaround (aside from building for 2.2).
Thanks,
Craig
Here's a good explanation of why this is happening:
"When an app is copy protected it causes this kind of behavior. Here is why. When an app is placed on the market the developer has the option to apply “Forward Locking”. This prevents the app from being pirated, and also prevents the app from being installed on a developer phone or an unreleased device.
Since Android 2.2 is not an “official” release yet the market gets a little unhappy because it doesn’t know what this OS/Device is that is trying to connect and thus applies the copy protection on these apps."
http://androidheadlines.com/2010/06/froyo-preventing-access-to-certain-apps-in-the-market.html
I think that protected and some paid app are not showing in 2.2
See Paul (ModaCo) twitter:
"It's entirely possible Google haven't 'flicked the switch' on the FRF50 build.prop yet, hence no paid apps until they do!"
edit: and I guess that protected app's are linked too.
There is a signature key for each Android build out there, including each manufacturer's inclusion of it in a device.
When you access the market, it checks this signature to see which applications you have permission to view.
In this case, Google have probably not enabled that signature to see certain applications, such as apps which are paid, protected or perhaps built for certain versions.
They still haven't enabled HTC Desire to view protected apps and it has been out for nearly two months -- there's even a bit of a furore over it on the internet, but Google don't seem to mind.

Categories

Resources