Issue
I'm trying to write an app that downloads a file with the Android DownloadManager and when done with the download, I want to edit the file. I'm facing a problem when trying to access the file with the following code:
File file = new File(context.getFilesDir(), filename);
file.exists() - returns false even though I can view the file with the File Manager app
Note: The above lines are written in a BroadcastReciever in the OnRecieve()
method and the device I'm using does not have external storage.
I tried checking where the code looks for the file by using the createNewFile()
method yet while that makes the exists()
method return true
I can't for the life of me find the created file in the File Manager app.
I have also tried the following URIs:
/storage/emulated/0/Android/data/com.example.max.lucas/files/filename
/emulated/0/Android/data/com.example.max.lucas/files/filename
/0/Android/data/com.example.max.lucas/files/filename
/Android/data/com.example.max.lucas/files/filename
/data/com.example.max.lucas/files/filename
/com.example.max.lucas/files/filename
/files/filename
/filename
yet none seemed to work.
My manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.max.lucas" >
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<activities>.....</activities>
<receiver <- Where I'm trying to find and edit the file
android:name=".rcv_DownloadedFilesHandler"
android:enabled="true"
android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.DOWNLOAD_COMPLETE"/>
<action android:name="com.example.max.lucas"/>
</intent-filter>
</receiver>
</application>
Am I missing something?
Solution
Everything is on the internal storage
Not from the standpoint of the Android SDK. Internal storage is not external storage, and neither are removable storage, in terms of the Android SDK.
the file is downloaded to /storage/emulated/0/Android/data/com.example.max.lucas/files/filename
That equates to new File(getExternalFilesDir(null), "filename")
, assuming that your app is running in the device's primary user account (which is typically the case).
getFilesDir()
points to a location where you can store arbitrary files in your app's corner of internal storage. Your file is on external storage, in an app-specific location.
Answered By - CommonsWare
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.