G33K-TRICKS: android
Showing posts with label android. Show all posts
Showing posts with label android. Show all posts

Sunday, January 29, 2023

[Explained] Android App directories and methods to access these directories


Android App directories and methods to be used to access these app directories 


Have you ever wonder why there are so many directories in your Android Phone and what purpose they do serve. As, Android, basically uses Linux as a base platform, it's likely to have Linux like file system structure. Let's take a quick dive into what are those different Android Application Directories in your Android mobile phone and then I've also mentioned the methods that can be used in your android application to access the data from these directories.


Android App Directory



We have 'apps' directory which is self explanatory. The data for the application that are pre-installed or the ones that you would install would sit in this folders. 

APPLICATIONS:
/data/app/* - This is for the users application Installation space 
/data/app/*/base.apk - Space for Android default or preinstalled system apps
/data/app/*/lib//*.so - Space for Shared Libraries(so = shared object similar to dll)
/data/app/*/oat//base.[art|odex|vdex] - Space of compiled executable code that we installed
/data/dalvik-cache//*.[art|dex|oat|vdex] - Space of compiled executable code only for preinstalled apps
/data/misc/profiles/cur///primary.prof - Androd RunTime Profile (refer: https://source.android.com/devices/bootloader/boot-image-profiles)
/data/misc/profiles/ref//primary.prof - Androd RunTime Profile (refer: https://source.android.com/devices/bootloader/boot-image-profiles


Next is user directory under Internal Storage

Internal Storage:
/data/user[_de]/<user_id>/<pkg> - To fetch data from this path use getDataDir()
/data/user[_de]/<user_id>/<pkg>/files - To fetch data from this path use getFilesDir()
/data/user[_de]/<user_id>/<pkg>/[code_]cache - To fetch data from this path use getCacheDir() or getCodeCacheDir()
/data/user[_de]/<user_id>/<pkg>/databases - To fetch data from this path use getDatabasePath()
/data/user[_de]/<user_id>/<pkg>/no_backup - To fetch data from this path use getNoBackupFilesDir()
/data/user[_de]/<user_id>/<pkg>/shared_prefs - To fetch data from this path use getSharedPreferences()

Next is external storage and directories present in external path like SDCard

External Storage:

/storage/emulated/obb/<pkg>/*.obb - Shared by multi-users, exposed in following view)

/storage/emulated/<user_id>/Android/obb/<pkg>/*.<pkg>.obb - To fetch data from this path use getObbDirs()

/storage/emulated/<user_id>/Android/media/<pkg> - To fetch data from this path use getExternalMediaDirs()

/storage/emulated/<user_id>/Android/data/<pkg>/ - To fetch data from this path use getExternalMediaDirs()

/storage/emulated/<user_id>/Android/data/<pkg>/files To fetch data from this path use getExternalFilesDirs()

/storage/emulated/<user_id>/Android/data/<pkg>/[code_]cache - To fetch data from this path use getExternalCacheDirs()



 TLDR, here it is in Tabular format for quick reference.

Android Apps directory and Description

Sunday, November 13, 2022

[Solved] Xiaomi Redmi Phone Rebooting from Fastboot Mode Or Rebooting from Recovery Mode



If you found this page while looking for a solution to a problem of your Xiaomi Phone getting switched off automatically while in Fastboot mode or While in Recovery Mode. You are absolutely at the right place.
Here is a basic and important info how to resolve this issue.

What is fastboot mode?


If you have not heard it before, in easy words fastboot mode is used for installing the ROM images (OS package files in other words). Usually, installing OS images is also called as Flashing.
For Flashing a mobile, "fastboot.bin" tool from Android is required. Flashing is capable of wiping the complete phones data as the new OS image will be written over the previous image data.

The Fastboot screen on usual Xiaomi phones look like:

Xiaomi Redmi Fastboot Mode


You can switch to Fastboot mode by Pressing Power Key and Volume Down Key


What is Recovery mode?

You can switch to Recovery Mode by pressing Power Key and Volume Up key and leave the Power Key when you seen the MIUI logo on the screen.

Recovery Mode is used for Zip files from OEMs or Update the OS version or firmware version. You can also use for deleting Userdata or do a factory Reset of your phone.

Recovery does not use command line tool instead it itself can flash the files which can be kept in the phone memory (if phones memory has partition available) or file can be kept in external SD card.

Recovery Mode on Xiaomi phones :




So, coming back to our original problem. If device is keep on rebooting automatically if you are in recovery mode or fastboot mode. Major of the issues that occur is due to Power key. As explained earlier, we use Power key for performing switching the device to Recovery or Fastboot mdoe.
On a regular basis, we tend to use Power key more often then any other keys on your phone. The key press button keys have limited life shelf like any other electronic devices. After certain period of time they stop working as they are intended to do so. 
Do not want to bring in here the concept of planned obsolescence. But its good read if you want to understand more how consumers are being  forced to upgrade or buy new item. A good read here:

Again, coming back to our topic, if your device is continuously rebooting, say after around 10 to 14 seconds when in fastboot mode that means the power key on device is in pressed state thus sending a Reboot signal to the device. Same happens when your device is in Recovery Mode. Your phone reboots and you continue to worry if the problem is with OS.
While you struggle to find out what and where exactly the problem is, your battery might get drained out and then you are out of options now. With drained battery, you can neither check further nor you can reflash new OS.
I've been into this situation. My phone's battery was dead and if I connect the phone to PC or Power Charger, it would start charge and before the charging  could even initiates, the phone reboots again. That is more of a frustation over an ongoing frustation. Either you need to have another phone which can charge your phones battery or some external universal charger that can charge the battery.
After digging a lot, I found a way to charge the battery atleast. So that I could confirm that, problem is because of Power Button and not because of corrupted OS.

While trying to do all of this , I tried flashing a complete OS image using the Xiaomi flash and that deleted everything from my phone including OS, so phone was just rebooting in fastboot mode.
Word of caution, I will not be responsible for any data loss in case you follow the steps. Please proceed if you understand the consequences.

To start with, I am assuming you have fastboot.exe on your system. If not, please refer this: https://wiki.lineageos.org/adb_fastboot_guide





You need to goto device fastboot mode (as given in this screenshot )
And quickly need to flash the TWRP Recovery Image.
In my case - I renamed the file to recoveryb.img

The command to flash is:

fastboot flash recovery <path to recoveryb.img/recoveryb.img


The file size is around 14MB so it would be flashed quickly before your phone switches off or reboot.
Even if your battery is dead you can flash via fastboot.



You can search for Fastboot flash recovery image on XDA forum. Please do drop a comment if you are not able to fine the fastboot.zip file, I can find and share with you.

Alternately, you can double click and run the flash_recovery.bat file to flash the TWRP recovery image when phone is in Fastboot mode.
Once flashing is done,  you will start seeing the MIUI logo.
Now, Connect your phone to a charger and you can remove the battery and connect it back while holding Power key and volume up key.
This will take you to TWRP recovery screen (as device was flashed with TWRP recovery image)
Quickly at bottom of the screen press up or down to move to some other page in recovery screen.
It seems, for me Power button had no impact on Recovery screen and I was able to charge the phone to 100% in recovery mode.
You would notice that phone is charging at the top right , where battery percentage is append with "+" symbol

Let the phone charge completely to be on the safer side.
Meanwhile, you can download the complete OS for your phone from MIUI.com
and keep it in SDCARD


Once phone is completely charged or charge is greater than 80%. Keep the sdcard inside the phone.
Press the Power key and volume up key to go to TWRP recovery screen.
Click on Install button.
Select the SDCARD path where OS zip image is kept (remember flashing the complete image will make you loose your all data)

And select Yes to start the phone flashing.
Now your phone has a proper OS image which is supposed to boot properly.

But if phone continues to boot again and again from MIUI logo screen.
That confirms something is wrong with the power button of the device.

Go to nearest mobile repair shop and get the power button replaced.
He might argue that the issue is with OS or flashing but as you have done your homework, ask him to replace the button blindly. It just would cost you few bucks. There you go, you will have your phone working afterwards for sure.

Friday, September 9, 2022

How to Uninstall VMware Intelligent Hub from Android


What is WorkspaceOne Intelligent Hub

And Removing VMware WorkspaceOne Intelligent Hub from Android phones

Let's start with the basic question, what WorkspaceOne Intelligent Hub is and what does it do?

How to uninstall workspaceOne Intelligent Hub
Well, it's not easy to get this one answered in short. It would require its own post. But anyways, I will try to summarise it in a short way. Please do comment if you are looking for a complete post on it. I've seen multiple reviews on Google Playstore where many users have asked, "I've installed Intelligent Hub but how to remove this app" or "can someone help to uninstall this app, I am not able to remove the Intelligent Hub".

So, lets start first with, what VMware WorkspaceOne Hub is -  WorkspaceOne Intelligent Hub is a Mobile Device Management application for Android phones and it falls under an umbrella term called Enterprise Mobility Management (EMM) app. Similar apps are also available on different Platforms like iOS, Windows and different companies have their own client application created. For example, Microsoft has InTune, IBM has MaaS360, Ivanti got MobileIron and there are many more. This client app allows organizations to securely enable employees to use their mobile phones and the applications on them. EMM apps help IT department of a company to control the device (not as in actual control but manage the device settings, applications, etc). They can deploy and remove the applications on the phone remotely. They also can deploy restrictions on the device like Not allowing a user to open Camera or to open Playstore app etc. Thus, managing the device to increase the productivity of the workforce. Most of the device users are either being requested by the company to install the Hub app from Google playstore OR the company's IT department itself would install the app and have it enrolled for the user. 

Why can't you uninstall Hub?

The moment you try to enrol the phone with Intelligent Hub, the app would request certain permission which I will be discussing later in the article, which is the cause of the issue. Be it company-owned mobile devices (i.e. Corporate Owned) or your personal device (i.e. Bring Your Own Device - BYOD), the day you do not want to use this app, you will have to unenrol yourself from the Intelligent Hub application first. Point to note here is unenroling from the Hub app will not uninstall the app.

Although, it's just a 100MB-150MB app, but no one would want an app that just sits on device ideally and consume space. You try to go to Settings > Apps > Find Hub. Here, what you find is, Uninstall Option is Disabled. This is what annoys everyone, why would an App which is installed by you, does not get uninstall.

And you would ask, why I am not able to uninstall it from my Android mobile. The simple reason is - it's Google (of course because Android is from Google) and your company's IT Admin does not want you to uninstall it from the phone.  But if you have a mobile enrolled in a specific mode you should be able to. Let's look into it further.



Why Google, because the MDM app is using the capabilities which Google has provided in the Android OS. The whole ecosystem is designed by Google in a certain way so that IT dept. or the WorkspaceOne UEM console Admins can managed it.
When you install any MDM application be it Android Intelligent Hub or some other MDM app onto your mobile, during the initial setup, the application would request certain permissions. Among these permissions, there is one that would ask you to set the application as Device Administrator
I am sure, you should be able to recall the below screen when the app was getting configured and you had to choose the Activate option.

Now another question arises, what is Device Admin? Let's do a small quick dive into it before proceeding. 

As the name suggests, Device Admin applications are the ones that have control of the device.

For example, "Google Find my Device" will be pre-installed on every Google Playstore supported device and this app will be de-facto a Device Admin. As the app has elevated permission already given by Android OS, this app is capable of ringing the device and locating the device without user's intervention. That is the only reason, we are able to find the device even if the mobile screen is locked and no one is using it.

You can see the same on your mobile phone under the Settings > Security & Location > Advanced > Device Admin App .  The Find My Device app is set as Device Admin with a Tick mark. The Tick suggests that the listed app is Device Admin and Un-tick refers that the app is installed but not set as Device Admin.

Steps to Uninstall Intelligent Hub from Android phones

So, if you want to Uninstall the Intelligent Hub from your mobile and if your phone is enrolled with and Android Legacy mode of enrolment called Device Admin mode, you just need to perform the below steps. For more details, you can check this guide from Google on Legacy Deprecation.

Go to Settings > Security & Location > Advanced > Device admin apps

Untick or Disable the WorkspaceOne Intelligent Hub

On the next screen, select "Deactivate this device admin app"

Go to Settings > Applications & notifications > Search for Hub and click on Uninstall





Device admin app screen


When you cannot Uninstall Android Hub

There is one more real-time scenario when you see Hub is installed on the device but the option to "Deactivate this device Admin app" is Disabled (Grayed out). This is the case, where the mobile was enrolled in Work Managed or Device Owner mode or Corporate Owner Personally Enabled (COPE). You can confirm this by launching the Hub app and clicking on "This device" option. If you are seeing "Work Managed" or Corporate Owner Personally Enabled as in the below screenshot, you can be sure that the Hub app is Device Owner app and your Company or IT department is in complete control of the mobile phone. 


     WorkspaceOne Intelligent Hub Account screen
WorkspaceOne Intelligent hub This Device screen




For the Work Managed and Corporate Owner Personally Enabled (COPE) enrolled mobile, the OS does not want you to un-enroll the device on your own and it does not want you to Uninstall the Device admin app too as the mobile device, in this case, would usually be owned by the company.
Hence, when you go to Device admin settings on your mobile device, you would find the setting as Disabled for you to click.



Work Managed enrolled Device Admin screen



As the option is grayed-out , you will not be able un-install the Hub app. If your Company IT Admin has permitted you to see and launch Hub, you can try launching the Hub app. From the Account screen, tap on This Device option and then tap on the Enrollment option. You would find Unenroll Hub if IT admin has kept the option enabled. If it's enabled by mistake, try not to click on it. Click it in Work Managed Mode or Corporate Owner Personally Enabled device would factory reset the device. This is expected Designed behaviour.


 Hub Account Screen WorkspaceOne Intelligent hub This Device screenUnenroll Hub



If you like to understand more about Work Managed mode, you can take a quick read on my earlier post - difference between Work Managed and Work Profile modes. You can also take a look into How to install and uninstall the Test DPC App on mobiles.

It should be noted that the above information is applicable for other MDM android apps like IBM Mass360, Miradore, MobileIron, and other widely used MDM applications. There might be a small change in the way the app is installed or configured on the mobile phones but the process of uninstalling these types of apps, once they become device Admin, is the same.
Hope, you'd find this article useful and learned something new. 

Also, if you have any more questions with respect to what happens to your personal data when VMware WorkspaceOne Hub installed, you can go through this FAQ page directly from VMware - 

Please do comment below if you have any questions or suggestions.


If Privacy is important to you, you might be interested to learn if you are being watched via Intelligent Hub: https://g33ktricks.blogspot.com/2023/10/privacy-concerns-with-intelligent-hub.html



Incoming searches:

How to uninstall VMware Intelligent hub

Uninstall steps for VMware Intelligent hub