Testing Your Expansion Files
says: ...
For example, if your package name is com.example.android, you need to create the directory Android/obb/com.example.android/ on the shared storage space. (Plug in your test device to your computer to mount the shared storage and manually create this directory.)
I found out(by Environment.getExternalStorageDirectory()) that external storage is mounted as /mnt/sdcard in my device. So.. How can I access this storage via Windows to copy about 200Mb files?
BTW the device does not have a micro-SD plugged in.
You can use adb push to push files to your device. More documentation here: http://developer.android.com/tools/help/adb.html
There’s also the Android File Transfer app you can use to copy files from your Mac or PC.
And as Andrew pointed out, the path reported by Environment.getExternalStorageDirectory() doesn’t necessarily match what you can see in the Android File Transfer app’s file system. In my case, the “Android” folder was also present in the root at /Android – and so I could ignore every path element before the “/Android/obb” part reported by Environment.getExternalStorageDirectory().
So, to copy extension files into the appropriate directory on the device, I had to you copy them to /Android/obb/com.example.android/ on the device.
Related
I have a file Sharing app on the Play Store. The app can transfer selected apps and .OBB files associated with them. I am testing my app for android 11 but am unable to get obb files for apps even with ALL_FILES_ACCESS.
The android documentation states the following:-
Write access to all internal storage directories, except for /Android/data/, /sdcard/Android, and most subdirectories of /sdcard/Android. This write access includes file path access.
Apps that are granted this permission still cannot access the app-specific directories that belong to other apps because these directories appear as subdirectories of Android/data/ on a storage volume.
So, in theory, I should have been able to read any file except for /Android/data directory and write to any directory outside of /Android directory except for /Android/media.
Please correct me if I am wrong. If, access to obb is not possible this way, is there any other way or is my app's feature just ruined and user cannot transfer obb files at all?
If your app holds REQUEST_INSTALL_PACKAGES permission it can access Android/obb directory.
Yes there is a fix
In Play Store download Google Files.
If already installed.
Hold the app and goto app info,
In last allow both "modify system" And "install unknown app" and you can easily copy and move from and to obb and data folder from Google files.
Sorry for my bad English but I hope u can understand.
You just need to enable "install unknown apps" permission for any file manager app AFAIK, and you will have access. Worked on my Samsung device with Samsung my files app.
Can i copy a file from a rooted directory like data/data/something/ to another directory in non rooted android phone prorammatically ?
If yes then how ?
If no then how whatsapp stores its key file in directory data/data/com.whatsapp.com in all the phones (non -rooted phones also)
Short answer: yes
Long answer:
Yes, but only from application's directory. The app have acces to own data directory (e.g. /data/data/app.package.name/) but have no access to toher directories in /data partition. You can store files in own directory without extra permissions or tools but you can not do it with other data directories without root
You can get the path to that directory using context.getDataDir() but it is not available on api lower 24. You should use context.getFilesDir(), context.getCacheDir() or context.getDir(String, int) instead
I know that the location for system apps is '/system/app' and the location for user apps is '/data/app'.
But I can't find the location of apk for the ones that I moved to/installed on sdcard.
Apps installed on the SD-Card are stored within the directory ".android_secure".
If I remember correctly you won't find the APK files directly in that folder because the content is encrypted. This is for preventing direct access to the APK file of paid apps.
The encrypted part is mounted somewhere else into the file system.
For me at least using cyanogenmod9 on a Samsung galaxy s 2 i777 I found them in /mnt/asec/
This location works differently than /system/app/ and /data/app/ because the system is actually creating a mount for each app rather than just stuffing them in a folder.
Make sure you take note of symbolic links.
You will not be able to add to here like you can the other two, but you can extract an apk. A better solution would be MyAppSharer from the market.
It will be in mnt -> asec -> -> pkg.apk
On Android 5.0+ (Lollipop, Marshmallow) almost every installed non-system app will be placed in:
/data/app/
Access to /data requires root.
Use su when you are working with adb shell to gain root access, this of course requires your phone to be rooted in the first place.
The directory contains a sub directory for every app.
Each sub directory is named by his package, following Androids app naming convention:
tld.author.appname-N
Where N represents a number greater or equal to 1
e.g. for Firefox it will look something like:
org.mozilla.firefox-1
Inside every app directory you will find a base.apk which is representing the installed app.
So if you want Firefox simply download:
/data/app/org.mozilla.firefox-1/base.apk
using adb pull/scp or copy it to your sdcard and download it using MTP.
Cheers
it is in
File Explorer--> mnt/sdcard
Install ES file explorer. Go to Home Page there will be link App...under that you will find all the apps installed on sd card or phone memory.. select app and share...enjoy...
On lineage 14, Android 7 , all sdcard apps are stored in /mnt/expand/
And apk in folder "app"
I would like my Robotium test to create a configuration file for the application I am testing to read. The file would be located in the internal storage /data directory associated with the tested application.
Is this possible? At the moment I am getting a "Permission denied" error.
Write shell script and push your file with adb root command.
If that doest not help you -create file inside your test.
It is actually possible to create files in data storage outside of an applications designated area. However, if these files are already generated by the target application, they must have WRITABLE permissions to enable the test application to modify them.
In my case my application does not generate the files, so this is not a problem.
Is it possible to install an .apk on a phone without using developer tools? Can it simply be dragged to a mounted SD card? My beta testers are not very tech-savvy or comfortable with the command line.
Thanks in advance,
Barry
Copy the .apk file to DropBox (or any other cloud storage program. Box is another popular one).
Load DropBox on your Android device, navigate to the location of the .apk file and click Export.
Choose a location on the SD card to copy the .apk file to (eg /downloads).
Use a file explorer program (I use ES File Explorer) and navigate to the location on the SD card where you exported the .apk file to in step 3.
Click the .apk file, which will install the application to your device (Note that you will have to turn on 'Unknown Sources' so that non-Android Market apps can be installed on your device if this setting is off).
You can install it from an SD card if you have a file browser on the phone, or you can download it via a webserver using the browser.
You could set up a web server that hosts your APKs. N.B. it would need to send .apk files with the right MIME type: application/vnd.android.package-archive.