I want my Android app not to be visible in the Play Store to people using a tablet.
I've made the changes to the AndroidManifest that were described in the documentation, and I'm sure it'll work, but I cannot update the apk unless I'm a 100% sure that it does.
The thing is, there is apparently no other way to check than to update the current production version...
Is there anyway I could make sure my compatible-screen setting works well, without any disturbance for the application users ?
Have you taken a look at the compatible screens documentation?
They have this little excerpt here that may be helpful:
The Android system does not read the manifest element (neither at install-time nor at runtime). This element is informational only and may be used by external services (such as Google Play) to better understand the application's compatibility with specific screen configurations and enable filtering for users. Any screen configuration that is not declared in this element is a screen with which the application is not compatible. Thus, external services (such as Google Play) should not provide the application to devices with such screens.
Does that help?
Related
I am trying to clone my app for using multi-user accounts for the same app.
This is inbuilt feature for many manufacturer now. Some apps also support in doing so, like Cloneit, Parallel etc.
My issue is my app doesn't appear in the lists of applications that can be cloned. Neither in the manufacturer option nor with other cloning apps.
Is there any setting I am missing in my app? for it to be eligible for cloning
Thanks
----UPDATE----
My apologies, I did not read your question thorough enough. I thought you were asking about supporting mult-user accounts. That was not your question.
So let's chat a bit further, but I'll leave the multi-user stuff below if it helps anyone else.
So first of all, when you make an app, it is available to all users on the device unless you hide it from some users. That is default behavior as long as the device supports multiple users.
Parallels, Cloneit and other apps are doing something completely different though. They are "not using multi account" they are making you a virtual environment that runs in parallel to your active one, allowing you to make exact copies of the app, but in a whole new active directory.
---QUICK LESSON---
See the way Android works is each application has a package ID, this
basically it's unique username for your phone.
Android has various user-groups to access areas of the device,
folders, and administrative settings. We have come to know these
user-groups as "Permissions".
When you install an app, it will request to be added to each
respective Linux User Group (permission) so that it has the right and
ability to touch the respective ares of the Android OS and file
system. Post-Marshmallow, you have to be added to the permission (aka
user-groups) at run-time by requesting in code and allowing the OS to
get user feedback to add you to the group.
Parallels, basically clones all of this behavior and makes a new environment for apps to be installed again, but in a different space, so user-groups, permissions etc, would have to be reobtained and the new space which is just normal coding practice, nothing unique about that statement.
However, Parallels indexing process of finding apps that it can clone is based on it's current environment, settings, and support capabilities. So if you compiled your application with settings, SDK, or anything that is not currently supported in the parallel environment, then your app would not be available for install.
Think of it like this. If you go to the App store from a phone that is running OS 6.0, you would not see apps that are written for 7.0 or 8.0 as they are not compatible and therefore, they don't show up in the list to download and install.
Parallels, does not necessarily clone your exact OS, it may have it's own packaged OS that it spins up. I can't speak to how/what Parallels or any other device creates their virtual environments for installation and cloning.
So all of that to say, check your compile SDK, check your target SDK, and check your minimum support. There is likely something in your compiling settings that is not compatible with Parallels virtual environment.
Start by creating a dummy app, and target something older, and make it more compatible. See if it shows up. If it does, then move up your SDk target and other versions until you see that it no longer shows up, then you will know which values affects it and why.
Hope that helps, please do update us on what you find in terms of support in Parallels.
OLD DISCUSSION, LEFT FOR SHARED KNOWLEDGE, NOT RELATED TO ABOVE
---MULTI-USER DISCUSSION for OEM App Development---
As of 5.0 Android, multi-user is disabled by default so the manufacturer must modify.
frameworks/base/core/res/res/values/config.xml:
<!-- Maximum number of supported users -->
<integer name="config_multiuserMaximumUsers">1</integer>
<!-- Whether Multiuser UI should be shown -->
<bool name="config_enableMultiUserUI">false</bool>
https://source.android.com/devices/tech/admin/multi-user
to allow the device to support multi-users.
As for using the Cloning apps, they each have their own methods of indexing apps, and handling this cloning process. Some may only index on app startup, others may index at install, so I would say you should confirm the behaviors of the cloning app you wish to play with.
Now if you are certain the device you are using supports multi-user then let's continue.
If you are a system level app intending on managing users, you will need permissions to do so as shown below:
<permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" android:protectionLevel="signature"/>
<uses-permission android:name="android.permission.MANAGE_USERS" />
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS"
android:protectionLevel="signatureOrSystem"/>
Here is a helpful link for setting up and handling switching between users in your application.
http://light-green-android.blogspot.com/2015/11/talking-between-user-android-profiles.html
https://source.android.com/devices/tech/admin/multiuser-apps
But again, this is only if you are building a system level app for an OEM.
Give latest appcloner a try. I'm pretty sure it allows you to do this thing. It can clone almost any app you like.
I have been trying to get an app install on my phone. Its compatibility page http://www.goqii.com/devices.html doesn't specify my phone.
I wanted to know how this compatibility is locked to specific phones.
Trying to reverse engineer the apk (using simple apktool), I thought about modifying the minimum/target sdk versions. These two strings show that the apk is already above the Android version on device (4.2.2 or 19)
android:minSdkVersion="12"
android:targetSdkVersion="14"
As this isn't the problem, I am thinking about how to make it work. Any ideas if this compatibility is set elsewhere? I don't see any hardware differences between the compatible phones and mine (a chinese make called Gionee).
I think you should look into uses-feature tag in the manifest. If you go through the doc:
The purpose of a declaration is to inform any external entity of the set of hardware and software features on which your application depends. The element offers a required attribute that lets you specify whether your application requires and cannot function without the declared feature, or whether it prefers to have the feature but can function without it.
So it could be NFC or Bluetooth LE or Camera etc which is required for app to run and developer has made required=true for those features in manifest.
If you're trying to download the app from the Play Store, it is very likely that the developer has defined filters on that app (http://developer.android.com/google/play/filters.html). These filters are not part of the Android Manifest and so, they cant be changed. This has been answered here already: How to restrict android app to specific device make?
i have my own app called Geoperks-rewards for you, the problem is i am not able to find my app from google play store for some handsets and even in tablet pc>Can anyone tell me what actually might be the reason behind this.I cannot specifically say for which models and OS versions, its appearing for random models.
The App compatibility depends on many factors, i.e. screen sizes, OS version, device hardware support, some features added in app, etc... All this information is provided on Android Developer website by Google. You can go through the topic Filters on Google Play and maybe revise the manifest.xml file of your app. You might get some idea why it is not compatible with several devices.
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.
If I create an application for Android, how do you package extra items in with it like a live wallpaper or widgets? For example, google maps does this by including a live wallpaper with the download of the latest version.
On a related note, with google maps, it's available for, I believe, 1.6 and up, but it seems that it is all the same download. So how do you ensure that, even though there may be a 2.x only feature included, it still shows up for lower OS phones? Or is the marketplace maybe actually holding onto two separate APKs for each OS?
I don't know anything about live wallpapers, but widgets aren't really a separate item from the app; if you read the development guide about widgets, you'll see that they're actually just another component of an application.
I'm not sure what you're getting at for the second question. Are you asking how Google Maps is deployed for multiple platforms? If so, maybe you should check the answer I posted to your last question (which is more focused on multiple platform deployment). The specifics I don't know; I'm not sure if they're two separate APKs or if Google just used their backwards compatibility.