Android app doesn't look eligible for cloning - android

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.

Related

Installing Multiple App APK in Android

My application suite is composed of multiple APKs corresponding to different applications. Installation of the different APKs should done in parallel so that to avoid user having older version for some app and newer version for other apps.
In the current approach, the user has to install each of the APK explicitly. If one of the APP is not updated with newer version, then it becomes an issue.
Is there a way to install multiple APKs corresponding to different App in one go ?
I guess the answer depends on what you want to achieve here.
If you want a single app to be able to install other apps without asking the user for his opinion, the answer clearly is no, and for good reasons:
The apps automatically installed would not be able to display their required permissions, which is a rule from Google Play in principle.
This behavior could be dangerous as it would then be easy for someone to produce for instance a game app and add a malware to it that would automatically install as well and sneak into the devices of whoever would use the app.
But there is an alternative to it, requiring the intermediate of a computer.
The project Mass APK Installer Tool was designed for exactly this purpose.
Check this article about Mass APK Installer Tool. The link to the code is broken as it has moved to its new location, here.

Android APK device compatibility?

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?

Blocking Apk's from installing directly into BB10.2.1 updated devices

I port my android apps for making bb10 builds . Since now from bb10.2.1 update blackberry has introduced a new concept wherein apk's can be directly installed and can be installed in BB10 devices if the manage apps in settings menu of the phone is made ON. My question is that I wanna restrict my users from doing so and not installing the apk's into bb10 . And take download my app only from appworld.
Has anyone faced and has fixed this issue kindly tell me on how to solve the same.
Based on the Android behaviour, I don't think you can restrict users from doing so.
I haven't tried it on BlackBerry but from what you say, that option sounds analogue to the Unknown sources setting under Security settings on Android. If the user enables the installation of applications from unknown sources on their phone, there is now way to prevent the direct install of the apk (by adding something to your apk or any other way).
There is no way to restrict it to BlackBerry World only. If they get the APK, they can load it directly this way. There may be other ways around it though.
If, for example, your app is for sale and people are side loading a pirated copy, you could change your app to be free, and put some advanced functionality in your app behind an in-app purchase. That way they'll be forced to go through the storefront at some point to pay. This takes bigger changes to your app though, and the IAP implementation is likely different between BBW and GPlay.
You could also put in a version check: when your app launches, it checks a special file on your web server to see what the latest version of the app is. If they don't have the latest version, it doesn't let them use the app until they upgrade. This won't prevent side loading or piracy outright, but you can put out updates often enough to make side loading very annoying. When they are roadblocked and told to get the new version, you can link directly to the storefront to encourage them to get the latest version there.
Thirdly, and lastly, if you port your app to a BlackBerry 10 native, cascades, or WebWorks app, the app file is fully protected and can't be pirated or extracted from BlackBerry World (since the platform is secure). That will 100% protect you from piracy on BlackBerry 10.
I hope this helps!

Methods of auto-updating an Android business app?

I'm currently developing a small Android app that will not be on the Play Store. It is a private business application that will be used for a non-emergency transport company. The Android app will show drivers a list of pickups and drop-offs that they will have throughout the day and allow them to update the status of those trips. What I'd like to do is have some method of updating the app during off hours or when the device is idle. Ideally, it would be great if someone has already written some kind of Android updater that can run as a service. However, I certainly wouldn't mind writing this on my own.
Either way, all it needs to do is pull an APK from our servers and install that APK. I usually don't like doing things sneaky like this, but our clients want it to be this way so that they won't have to go to each device and press OK on permission prompts and they don't want to leave the responsibility of updating the software to the drivers.
I understand the security concerns, but it seems to me that there should be some way to allow an app to auto-update itself if the user permits it. Also, our app is signed and includes a certificate on the device to verify that the downloaded app is legit.
As CommonsWare mentioned it's not supported by standard android. If you take the path of creating your own firmware and installer take a look at the existing PackageInstaller. The required changes are not so complicated.
I did it for a couple of custom versions and it works.
Either way, all it needs to do is pull an APK from our servers and install that APK. I usually don't like doing things sneaky like this, but our clients want it to be this way so that they won't have to go to each device and press OK on permission prompts and they don't want to leave the responsibility of updating the software to the drivers.
This is not possible, except via custom firmware or on a rooted device.
it seems to me that there should be some way to allow an app to auto-update itself if the user permits it.
You are welcome to build your own customized version of Android that has this capability. Stock Android does not offer this, except to the firmware itself.

Check android device possible to install?

I have a question about installation of an app on android device. I have an application that requires that a user installs another application. That required app may be different at different times, but sometimes user device cannot install this required app for some reason. I want to check programmatically that a user can or cannot install a required app. Is it possible??
As mentioned in the comments, you can check whether another application is already installed, but there's no simply way to determine whether another application is technically capable of being installed.
This determination is based on the AndroidManifest.xml file of the other application (at least), and possibly some internal checks that occur within other application's code. You would need to know the requirements for the other application (minimum SDK version, supported screen sizes, camera and other hardware requirements, etc.) and check for them yourself.

Categories

Resources