Skip to content

Commit 406cbb9

Browse files
Ron RadtkeRon Radtke
authored andcommitted
Logic to write file content to a media file
1 parent 0ccb6ce commit 406cbb9

File tree

4 files changed

+40
-1
lines changed

4 files changed

+40
-1
lines changed

android/src/main/java/com/ReactNativeBlobUtil/ReactNativeBlobUtil.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -441,4 +441,9 @@ public void createMediaFile(ReadableMap filedata, String mt, Promise promise) {
441441
else promise.reject("ReactNativeBlobUtil.createMediaFile", "File could not be created");
442442
}
443443

444+
@ReactMethod
445+
public void writeToMediaFile(String fileUri, String data, Promise promise){
446+
ReactNativeBlobUtilMediaCollection.writeToMediaFile(Uri.parse(fileUri), data, promise);
447+
}
448+
444449
}

android/src/main/java/com/ReactNativeBlobUtil/ReactNativeBlobUtilMediaCollection.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,11 @@
99
import android.provider.MediaStore;
1010

1111
import com.ReactNativeBlobUtil.Utils.FileDescription;
12+
import com.facebook.react.bridge.Promise;
1213

1314
import java.io.File;
15+
import java.io.IOException;
16+
import java.io.OutputStream;
1417

1518
public class ReactNativeBlobUtilMediaCollection {
1619

@@ -93,4 +96,28 @@ public static Uri createNewMediaFile(FileDescription file, MediaType mt) {
9396
return null;
9497
}
9598

99+
public static void writeToMediaFile(Uri fileUri, String data, Promise promise) {
100+
try {
101+
Context appCtx = ReactNativeBlobUtil.RCTContext.getApplicationContext();
102+
ContentResolver resolver = appCtx.getContentResolver();
103+
104+
// set pending
105+
ContentValues contentValues = new ContentValues();
106+
contentValues.put(MediaStore.MediaColumns.IS_PENDING, 1);
107+
resolver.update(fileUri, contentValues, null, null);
108+
109+
// write data
110+
OutputStream outputStream = resolver.openOutputStream(fileUri);
111+
outputStream.write(data.getBytes());
112+
113+
// remove pending
114+
contentValues = new ContentValues();
115+
contentValues.put(MediaStore.MediaColumns.IS_PENDING, 0);
116+
resolver.update(fileUri, contentValues, null, null);
117+
118+
} catch (IOException e) {
119+
promise.reject("ReactNativeBlobUtil.createMediaFile", "Cannot write to file, file might not exist");
120+
}
121+
}
122+
96123
}

index.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -775,4 +775,6 @@ export interface MediaCollection {
775775
* @param mediatype
776776
*/
777777
createMediafile(filedata: { name: string, parentFolder: string, mimeType: string }, mediatype: Mediatype): Promise<string>;
778+
779+
writeToMediafile(uri: string, data: string)
778780
}

mediacollection.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ function createMediafile(filedata: Object<{ path: string, parentFolder: string,
88
return ReactNativeBlobUtil.createMediaFile(filedata, mediatype);
99
}
1010

11+
function writeToMediafile(uri:string, data:string){
12+
return ReactNativeBlobUtil.writeToMediaFile(uri, data);
13+
}
14+
1115
export default {
12-
createMediafile
16+
createMediafile,
17+
writeToMediafile
1318
};

0 commit comments

Comments
 (0)