Open an Android app from a directory on sdcard - java

I have a client that uses android devices with a kiosk mode. They have a kiosk mode manager that only allows apps they add to it to be opened. I was informed the kiosk manager opens apps from the Android/data directory on the device (from one of the com.google.x type directories). I've been attempting to have on of those directories created by this app so they can launch it from their kiosk manager, but haven't had much luck. I can see the directory I'm looking for in the Device File Manager under data/data/com.x and data/app/com.x, but is there a way for me to get those files to be located under sdcard instead of data? The app also doesn't give me an option to manually move it to external storage, so I'm not sure if that's part of the problem. The devices are running Android 8.1.0 and the app just sends user input data to a server on the network.
Essentially, they want to be able to view the app files from the device and also open the app from a directory on the sdcard (sdcard/Android/data/x).
I have tried adding android:installLocation="preferExternal" in hopes of being able to see the app files on the sdcard where they requested it, but it has not made a difference.
Thanks for any help!

Related

How do I build my apk as a system app on Windows?

I have seen many guides online for how to do this, but they are all assuming a linux environment. I am developing using Android Studio on Windows, and am having trouble following these guides. Specifically, I do not know where to find the platform.pk8 and platform.x509​.pem files required for making my keys. The guides all say they are located in build/target/product/security, but I assume this is the corresponding linux directory. Where can I find these files on my windows device?
To have a system app in Android OS you need to sign your APK by the same key which the OS is signed. These key in the Android open source project can find in
build/target/product/security
But each company has got its own key and you cannot access to those key!
You can build your own Android image and load it your own development bard which probably is not easy. Then you have a system key. you can find useful information here
But the main reason if being a system app is to have the privileges of a system app.
What are those privileges? granting all permission and have access to the restricted area and secure setting for example.
So there is another possible way to be a system app.
If you can push(copy) your APK to /system/priv-app/ folder, then Android will grant all system privileges to your app automatically. (to all application in /system/priv-app/ folder not just to your app) .
How you can push your file into /system/priv-app/?
When you have Android Studio probably you can run adb. you can find some information here
You can connect to your android device using adb and through your local network
adb connect deviceip:port
port by default is 5555 and you don't have normal type it.
For connecting to an Android device the device should in developer option. you can find some useful information here
when you connected to your device you check if your device is rooted and the system folder is mountable or not.
/System/ folder is protected by AVB and furthermore, you need to be a root user, so you use the following command
adb root
adb remount
if your device is rooted you can easily push your APK to system folder and have all privileges of a system app.
adb push <yourPackagePath> /system/priv-app/youtPackage/yourPackage.apk
if your device is not rooted you should search for how you can root your device

Uninstall app from android device without permission

I developped launcher for an android MDM system. I control this mdm system with Api, so I need help to know how can uninstall/install app into device that use this mdm system in background and without the installer permission.
I also need to delete the apk file from android device storage after the install.
How can I do this programmatically in java?
Any one have solution?
For security purpose without the installer permission we cant install/unistall application in android.
It may require device rooted & make your app system. Read this for reference.
Note: this is not recomended if you want publish your app to playstore

Store files on server and download them automatically when Android app is installed

I am making a Educational app for students of different classes from 9-12. Right now all the study materials are stored in the app itself so the size of the app is increased. Here is the screenshot:-
All the data is stored in html format inside 'assets' folder
These are the notes for all the students for each subject
I want to store these the whole assets folder on server and when the app is installed I want to automatically download the 'assets' folder to user's mobile so that the size of the apk file is reduced. Currently the size of the app is 11 MB, in which about 5 MB is for the assets folder and till now I have just added materials for class 10 and still I have to add content for class 9,11,12. And also i have to add more contents for class 10 so later on my app size will increase.This is the link to the app:-
1Learn NCERT App
The app I am developing is kind of offline app where the user need not to be connected to internet so for the first time when the app is installed I want to sync the files from server to user's mobile but from next time the app will use the downloaded files and no need of Internet connection.
I don't want to use obb files, Is there any other method to do it?
Try expansion files. More info here https://developer.android.com/google/play/expansion-files. It solves a lot of the problems with hosting large files by using Google Play. I am not sure if your main app must be >100 MB for extension files to be allow. Give it a shot let me know.

Bundle APK with app

I am creating an app which uses ZLib (QR code reader), but it requires another app to be installed for it to work. I want to be able to package the other apps APK file within my APK. Is this possible?
Sidenote: I am trying doing this because my app will be used on an Amazon Fire kindle, but the prerequisite app is only on the Google Play store.
You can have a copy of the other app's APK in your app (e.g. within the assets directory).
After your app is installed, you can copy the APK to the public storage and launch the package manager to install the other app from the APK:
Intent pmIntent = new Intent(Intent.ACTION_VIEW)
.setDataAndType(Uri.parse("file:///path/to/the.apk"),
"application/vnd.android.package-archive");
startActivity(pmIntent);
But note that this requires the user to have enabled side loading of apps from third-party sources.
Your current approach is unsuitable in many ways.
You can use alternative libraries that can be embedded in your app and don't need any other application to be installed on the user's device. There are a handful of options on the Android Arsenal.

Android App that listens if other apps crash on device

Is it possible to have an App that works in the background and listens to when another app crashes on my device?
I want my app to notify my computer when it detects that the app I'm using on my device crashed or stopped. If so would what it need to listen too?
A very hacky way would be to write a native binary which monitored Logcat, upload the executable to your device using ADB and launch it using the shell account. Note that this is not an App though.
The Android shell user has enough privileges to view Logcat for all processes and perform network operations, so you could just scan Logcat for the tell-tale messages that indicate that an app has crashed, siphon out the stacktrace from Logcat and then send it over the local network to your PC.
This actually sounds like quite a cool idea. Might have a go at it building it myself :-)
I think you want to create Samsung's Smart App Manager . That track the crashes of all application and show notification to uninstall app or remove.
From Android doc : By default, the system assigns each app a unique
Linux user ID (the ID is used only by the system and is unknown to the
app). The system sets permissions for all the files in an app so that
only the user ID assigned to that app can access them.
Each process has its own virtual machine (VM), so an app's code runs
in isolation from other apps.
By default, every app runs in its own Linux process. Android starts
the process when any of the app's components need to be executed, then
shuts down the process when it's no longer needed or when the system
must recover memory for other apps.
Each and every android application runs in isolation from other apps. So any app can't track the crash log of other app.
The question is : How Samsung's Smart App Manager is doing.
I think samsung smart app only works with Samsungs devices. Root Permission is required to perform such type of action. Samsung's Smart App only have root permission in Samsung's devices.
If you are developing app for custom ROM or Rooted android device then you can otherwise you can't do.
When you upload your apk in the android developer console you have any options including errors options, then when the app crashed in some device they can send a report and you will can see it in de console...

Categories

Resources