Recently I came across a few apps (such as Clockworkmod's Rom Manager) where in order to get the pro version you had to download another APK. However once this APK was downloaded Rom Manager automatically knew this APK existed and added new functionality's. For example another app is the Astro app in which you can extend it by downloading modules from the Market.
Now I know how to check for the existence of another app, and I also know how to interact between apps via services. However my question is,it seemed like Clockwork and these other apps are using different apks for a plug-in type architecture. How does one do that? Have they predefined an entire plugin architecture and service model so whenever a new apk is installed the main app can check if its a module and call commands on it? Or is there something else going on?
I think these apps just know their plugins and how to use them. Plugins are separated to save some space or to add paid functionalities to free apps. Note that there are no 3rd party plugins to these apps - all of them was created by apps authors.
Actually I think it is technically possible to create real plugin system for Android apps. You could search for installed plugins using broadcast receivers, then talk with them through some API. However adding extensibility through plugins isn't trivial task, so I don't think it makes much sense to create such apps for mobile devices.
Related
I don't collect installed apps from a device, but I use variety of libraries. I think it is probably from one of the libraries I use, If so, how can I find the library that collects such data.
The cause is most likely from the library you used. Here is the steps to find out which library collects installed apps on device. This applies if you developed the application via Java/Kotlin.
Decompile the application - You can use: http://www.javadecompilers.com/apk
Search the specific code for collecting installed apps on device one by one from the whole decompiled folder. Like getInstalledApplications, getInstalledPackages, ApplicationInfo.FLAG_SYSTEM, for more info How to get a list of installed android applications and pick one to run. You can use Visual Studio Code to search specific text from a whole folder.
You can now find the library that you uses the code.
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 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.
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!
I am new to developing Android applications and I have an idea for a project which involves a free base application and a number of plugins which the user would have to purchase. As far as I have been able to figure out, I should package the plugins as services which the main application will access and I have a vague idea of how this is achieved.
Here is my question.
Is it possible to sell these plugins on Google Play store and, more importantly, how would I make sure that the user will only be able to purchase the plugin once the base application has been installed?
Or is there a way to specify that the base application will be installed together with the plugin?
I have read about filters but somehow I can't seem to find an appropriate filter for the task.
Thanks
Is it possible to sell these plugins on Google Play store
Yes. GO Launcher does exactly this for themes. Themes can be put up by third part devs, and users can download them to use them
how would I make sure that the user will only be able to purchase the plugin once the base application has been installed?
There is no option to do this. The best you can do is run a check for your base application when your app is installed and run, and if it isn't installed prompt the user to install it.