I have an Android Emulator I'm trying to use to debug an app I'm developing.
I know in Android Studio they have the Device File Explorer which is helpful but I may not know the exact subfolder where the file I'm looking for lives:
Is there a way either in the Device File Explorer or another tool that can search the file system of an Android Emulator by file name? (My computer's OS is Windows.)
From my Delphi app on Windows 10, I want to be able to transfer an android .apk file to the 'Internal Shared Storage\Download' folder on a USB attached Android Device.
It's actually a Datalogic Memor 1, but could be anything.
The Android device has file transfer enabled, and I can browse to the Download folder using Windows File Explorer and copy the file manually this way, but I can't find a way to do it from code.
When using TFile.Copy I always get 'The specified path was not found' but I don't know what path name I should be using and I suspect this is the wrong way to do it anyway.
I have looked into ADB but the device must be in debug mode for this to work so this is not an option.
It seems to me that this should be a fairly common thing to want to do.
How does the Window File Explorer do it?
Any suggestions please?
How am I able to push .txt files to the emulator using Android Studio?
One easy way is to drag and drop. It will copy files to /sdcard/Download. You can copy whole folders or multiple files. Make sure that "Enable Clipboard Sharing" is enabled. (under ...->Settings)
Update (May 2020):
Android studio have new tool called Device File Explorer. You can access it in two way:
By clicking on Device File Explorer icon in right bottom corner of android studio window.
If you could not find its icon, inside Android Studio press shift button twice. Quick search window will appear, then type Device File in it and Device File Explorer will appear in search result and you can click it.
Then you can navigate to folder which you want to push your file in it. Right click on that folder and select upload(or press Ctrl+Shift+O). Select file you want to upload and it will upload file to desired location.
Push file using adb.exe:
In Android 6.0+, you should use same process but your android application cannot access files which pushed inside SDCARD using DDMS File Explorer. It is the same if you try commands like this:
adb push myfile.txt /mnt/sdcard/myfile.txt
If you face EACCES (Permission denied) exception when you try to read file inside your application, it means you have no access to files inside external storage, since it requires a dangerous permission.
For this situation, you need to request granting access manually using new permission system in Android 6.0 and upper version. For details you can have a look in android tutorial and this link.
Solution for old android studio version:
If you want to do it using graphical interface you can follow this inside android studio menus:
Tools --> Android --> Android Device Monitor
Afterward, Android Device Monitor(DDMS) window will open and you can upload files using File Explorer. You can select an address like /mnt/sdcard and then push your file into sdcard.
You can use the ADB via a terminal to pass the file From Desktop to Emulator.
adb push <file-source-local> <file-destination-remote>
You can also copy file from emulator to Desktop
adb pull <file-source-remote> <file-destination-local>
How ever you can also use the Android Device Monitor to access files. Click on the Android Icon which can be found in the toolbar itself. It'll take few seconds to load. Once it's loaded, you can see a tab named "File Explorer". Now you can pull/push files from there.
Android Device monitor is no longer available in android studio.
If you are using android studio 3.0 and above.
Go to "Device File Explorer" which is on the bottom right of android studio.
If you have more than one device connected, select the device you want from the drop-down list on top.
mnt>sdcard is the location for SD card on the emulator.
Right click on the folder and click Upload. See the image below.
Note: You can upload folder as well not just individual files.
I am using Android Studio 3.3.
Go to View -> Tools Window -> Device File Explorer.
Or you can find it on the Bottom Right corner of the Android Studio.
If the Emulator is running, the Device File Explorer will display the File structure on Emulator Storage.
Here you can right click on a Folder and select "Upload" to place the file
I usually use mnt - sdcard - download folder.
Thanks.
After you drag and drop your files from Desktop to Emulator like this answer here :
https://stackoverflow.com/a/44885506/3904109
Your location of files will be
Android 19, 21, 22 /storage/sdcard/Download
Android 23, 24, 25, 26, 27, 28, 29, 30 /storage/emulated/0/Download
Open command prompt and give the platform-tools path of the sdk.
Eg:- C:\Android\sdk\platform-tools>
Then type 'adb push' command like below,
C:\Android\sdk\platform-tools>adb push C:\MyFiles\fileName.txt /sdcard/fileName.txt
This command push the file to the root folder of the emulator.
refer johnml1135 answer, but not fully work.
after self investigate, using official docs, it works now:
and use Drag and Drop actually worked, but use android self installed app Download, then you can NOT find the copied file, for not exist so called /sdcard/Download folder.
finally using other file manager app, like
ES File Explorer
then can see the really path is
/storage/emulated/0/Download/
which contains the copied files, like
/storage/emulated/0/Download/chenhongyu_lixiangsanxun.mp3
after drag and drop more mp3 files:
adb push [file path on your computer] [file path on your mobile]
on windows 10 , android studio emulator.
be on the directory yourFile.xml is.
on terminal, command:
adb push yourFile.xml \C:\Users\yourUN\.android\avd\Pixel_4_API_29.avd\mnt\sdcard
Pixel_4_API_29 is the emulator name , choose the device you are using on emulator
Just need to drag and drop to the corresponding directory in the ADB
Sometimes, while I run a development version of an app, I want to export the database so I can copy it over to a desktop, view the database there and ensure it is being edited correctly.
Normally I will call Environment.getExternalStorageDirectory() and copy the database there. However, Jellybean on the Galaxy Nexus threw me for a loop--I could not see the file via MTP! (Mac OS X File Transfer). If I use Wifi File Explorer to browse the files on the device, then I see the database file.
After doing some research, I'm guessing this is due to Jellybean's simulated user-specific external storage. That would be why it tells me it's writing to /storage/emulated/0/ instead of /sdcard for example.
Is there a way to tell Android "write this file to where it is world-readable (including MTP) instead of only making it available to apps run under the same user"?
I had the same problem. I couldn't see a txt file I'd written in the 'Download' folder with 'Android File Transfer'. The only solution I've found is to write an extra .txt file in the same folder where you write your file, then open that folder in an app like 'Astro File Manager' and delete the extra file. Now open 'Android File Transfer', close it, and open it again. Your desired file should appear now.
I use /storage/emulated/0/Download/ as path but it should work in any other folder.
I know it's not the perfect solution but for now it's all I have.
Hope this will work for you too!
I know there are many questions regarding font installation on android emulator. I'm sharing the method that worked for me as an answer, if anyone have a better way please share it.
Whenever android fails to find a specific character it looks to DroidSansFallback.ttf, so what you need to do is replace the DroidSansFallback.ttf of the emulator by renaming a ttf font of your required language to DroidSansFallback.ttf. Do the following steps.
1.Get a market enabled rooted android emulator. You can find one here: Rooted Market Enabled AVD
2.Then grab an explorer app, I prefer root explorer.
3.Rename a free ttf font(which you want to install) to DroidSansFallback.ttf.
4.Create an AVD from the image you downloaded in step 1.
Push DroidSansFallback.ttf to the sdcard of emulator via file explorer in DDMS (I'm using Eclipse Indigo IDE).
Install root explorer (you can use another explorer downloaded via market).
Open root explorer, click mount r/w.
Then go to sd card and copy DroidSansFallback.ttf, then go to system, click mount r/w.
9.Then go to fonts and overwrite the existing DroidSansFallback.ttf.
Then give all permissions to the new DroidSansFallback.ttf from permissions option.
That's it.
I used this method to answer a question about Bangla Font Insatallation