Preface: I understand most problems and many solutions associated with bundling multiple apps.
My current app relies on a secondary app in order to function correctly. My current method of installing this secondary app is to include its .apk file in the assets of the primary app and prompt the user to install it.
If the user has INSTALL_NON_MARKET_APPS disabled, then the primary app redirects the user to the helper app on the marketplace.
However, this process has a few problems:
Most users are forced to download apps two times from the marketplace, which is cumbersome.
I am forced to have a helper app that does nothing on its own on the market, which is most likely confusing to users who find it by searching the market.
Is there a better method of bundling two apps together and having the user install both at the same time? Alternatively, is there a method to create an unlisted app on the market, so that it can only be installed if the correct market uri is used?
Yes CLay there is one example of option one:
The android phone app is actually several applications bundle together..its accomplished by having each application as one big activity and using tab activity navigation.
However, I do not have access to your code tell you what security implications might occur bundling together that way as both applications bundled together will have the same security sandboxing settings you implement via android manifest an code,etc.
Related
I published many versions so far. And, the users should use the most recent app. However, apkpure shows all the app list that I released.
How come this website take all the apk or abb? I don't want the website takes my applications and block the users in the app. Is there any way to do that?
Actually it's possible to do, using one of the Android features like app bundles. This could help you to verify non Google Play installation. Or even create behavior to crash/exit in such cases.
The whole idea of the approach, it's separation application features to different bundles which could installed be installed within Google play package manager. So you can check it's documentation.
Lots of android users can not access play store when removing the google restrictions, because they want apk file for install. Third party websites publish for that kind users, As well as some desktop users want APk file specially GAME APPs. I think they not Change original APK file.
My question may look strange but I'll try to explain somehow. Let's imagine there is an Android device with software that adjusts some settings based on application package name - it's a real-life scenario. This software may provide better performance for listed applications and there is no way to add my application to that list. What I'm capable of doing is to release my application under one of listed package names (not to Google Play, just provide APK on GitHub so that anyone who wants to use it will install it manually). And there comes my question:
is it legal to use some company's existing package name for my own application? Is it protected legally? My app is free & open source application.
Just to be clear: I'm not doing this to impersonate "real" application with bad intentions. I just want my application to use full range of device capabilities... And download page will state it clearly & visibly :)
In other words: can I release app with package name e.g. com.google.android.talk? I know that it won't override existing app if someone has it installed etc. (it's not my goal to override some application). I'm just talking about such possibility and legality.
This is totally legal, as you can use whatever String you want for your app/package name.
However, just doing this will most probably be not enough to "impersonate" the other app, as this would be a serious security flaw. First of all, there can never be two apps with the same package name installed.
If the app you speak about is created by a "serious" developer, say Google or one of the OEMs, it will check both package and signature of the app and will therefore know your app is not the same as the replaced app.
Also, when the user tries to install your app, a package conflict will happen, followed by the signature conflict. There are two scenarios here:
If the app you are replacing is a standard app, the user will be able to install your app from adb, but only after thay accept to completely wipe the data of the original app. You have probably seen this dialog while developing stuff.
If the app is provided by the OEM and has system permissions, the installation will simply fail, with no possibility to "overwrite" the app. This can be dodged by having the devices rooted, replacing the .apk file in the system directory and restarting the phone.
Please mind that none of the above will work by just uploading the .apk to the phone. This needs to be done from adb. On-phone installer will just fail.
I'm building an MDM application for Android devices and I want to be able to silently update the MDM app in order to patch security holes, add new features, etc. I know it is possible to achieve this by accessing the Android Package Manager Installer but from what I can tell this requires the application to be signed with the same signature from a specific OEM.
Is it possible to do a silent update for an MDM application without rooting the device?
You cannot, and this is viewed as a Good Thing from the point of view of the user, because the code that I install cannot be changed by anybody except software signed by a trusted key (such as Google's Play), or with manual approval.
I can think of two workarounds:
Check if there's an update, download it, then refuse to do anything until the user updates the app.
Dynamically load most of your app's functionality at runtime from a JAR that your app downloads. You could silently update this at will.
Heck, you could even combine the two options, so that if the wrapper needs updating, it will bother the user. The second method will make the nags very infrequent.
You should probably let the user know that this is happening, at least in an initial info-screen. I know I would uninstall any app that tried to go behind my back in this manner, if I found out about it.
Use case:
We have a container App which comes without the needed content preinstalled.
Only after installing the App, users choose which items they want to install. The items here are "city packs", that is data for rendering maps, routing offline etc.
It would be very attractive for several reasons to be able to create Appstore entries for specific cities. However we don't want to get into a mess by really duplicating the App (maintenance overhead, fragmentation, potentiall confusing for users).
That's why I was thinking about something like this:
The additional Appstore entries install a minimal App (I'll name it client App) which essentially just launches the main App with some parameters. On Android that should be possible with Intents, on iOS with custom URL schemes.
Since I don't know of any App using that approach, I wonder if they exist and if it's possible.
There are however 2 potential issues I see with that approach:
If the main App isn't installed when one of the client Apps wants to launch it, the client App can still open the App page in the Appstore. At that point however the client App will lose control and I guess will not be able to have the main App launched with a parameter set. Is that correct?
Would Apple accept such an App?
I'm not sure if what you want to do is possible, but with my experience with Apple it is unlikely that they'd be happy with many different parts of the app being separate... I may be wrong, but that's how I think it'll go...
Have you thought about using in-app purchases? Even if the packs are free i'm sure you can set the cost to 0 and have the data download then?
Remember how Facebook posted an update awhile back that included a 'Camera' app as well as the regular Facebook app? How can I package 2 apks together in the market so when you download the main application, your actually getting 2 separate applications that are related to each other?
I would rather have my users get both applications at once then trying to hunt for both of them individually. Thanks
Remember how Facebook posted an update awhile back that included a 'Camera' app as well as the regular Facebook app?
No.
How can I package 2 apks together in the market so when you download the main application, your actually getting 2 separate applications that are related to each other?
You can't.
The closest you could get would be to package App B's APK into App A's assets, then when App A is run, copy App B to external storage and initiate an install. This will cost twice the storage space, since you have no way of removing the copy of App B from App A's APK. And, the user will have to go through and approve the install of App B.
My guess is that what you think are two separate applications are really two separate launcher icons, which can be handled in a single APK by having two <activity> elements with the <intent-filter> for MAIN and LAUNCHER, instead of just one.
A very interesting question. I asked that question myself too. But did not get an answer to that. The only thing I could came up with was to use tge (unifficial) Google play store API and then after the User starts the App you could download the second App trough the API. But I assume thats not very elegant