aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuutaW <17158086+trumeet@users.noreply.github.com>2019-04-19 10:43:22 -0700
committerYuutaW <17158086+Trumeet@users.noreply.github.com>2019-04-19 10:43:22 -0700
commit630301cbd9e3d565c5ee687dfd7312f691330b03 (patch)
tree46c1d8d9606bb5818c36a1060812c6abee16f7f1
parentdfed11731cef732e1767bddf43269d5bf14a7197 (diff)
downloadOhMySAF-630301cbd9e3d565c5ee687dfd7312f691330b03.tar
OhMySAF-630301cbd9e3d565c5ee687dfd7312f691330b03.tar.gz
OhMySAF-630301cbd9e3d565c5ee687dfd7312f691330b03.tar.bz2
OhMySAF-630301cbd9e3d565c5ee687dfd7312f691330b03.zip
feat(library/demo): add some simple APIs
Signed-off-by: YuutaW <17158086+Trumeet@users.noreply.github.com>
-rw-r--r--app/src/main/java/moe/yuuta/ohmysafdemo/MainActivity.java10
-rw-r--r--ohmysaf/src/main/java/moe/yuuta/ohmysaf/SafFile.java28
2 files changed, 32 insertions, 6 deletions
diff --git a/app/src/main/java/moe/yuuta/ohmysafdemo/MainActivity.java b/app/src/main/java/moe/yuuta/ohmysafdemo/MainActivity.java
index 52b611d..04ec5d3 100644
--- a/app/src/main/java/moe/yuuta/ohmysafdemo/MainActivity.java
+++ b/app/src/main/java/moe/yuuta/ohmysafdemo/MainActivity.java
@@ -16,7 +16,6 @@ import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;
-import java.io.File;
import java.io.FileDescriptor;
import java.io.IOException;
import java.io.OutputStream;
@@ -32,7 +31,7 @@ public class MainActivity extends Activity implements View.OnClickListener {
private ImageView mImage;
private volatile Bitmap mBitmap;
- private File mFile;
+ private SafFile mFile;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -87,7 +86,7 @@ public class MainActivity extends Activity implements View.OnClickListener {
@Override
public void run() {
try {
- OutputStream stream = getContentResolver().openOutputStream(((SafFile) mFile).getAndroidUri(), "w");
+ OutputStream stream = mFile.openOutputStream(MainActivity.this, "w");
mBitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
stream.flush();
stream.close();
@@ -105,8 +104,7 @@ public class MainActivity extends Activity implements View.OnClickListener {
@Override
public void run() {
try {
- ParcelFileDescriptor parcelFileDescriptor =
- getContentResolver().openFileDescriptor(((SafFile) mFile).getAndroidUri(), "r");
+ ParcelFileDescriptor parcelFileDescriptor = mFile.openFileDescriptor(MainActivity.this, "r");
FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
mBitmap = BitmapFactory.decodeFileDescriptor(fileDescriptor);
parcelFileDescriptor.close();
@@ -191,7 +189,7 @@ public class MainActivity extends Activity implements View.OnClickListener {
}
private void runTakePersistablePermission() {
- getContentResolver().takePersistableUriPermission(((SafFile) mFile).getAndroidUri(),
+ mFile.takePersistableUriPermission(this,
Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
log("Done");
}
diff --git a/ohmysaf/src/main/java/moe/yuuta/ohmysaf/SafFile.java b/ohmysaf/src/main/java/moe/yuuta/ohmysaf/SafFile.java
index 3aaee77..e433c14 100644
--- a/ohmysaf/src/main/java/moe/yuuta/ohmysaf/SafFile.java
+++ b/ohmysaf/src/main/java/moe/yuuta/ohmysaf/SafFile.java
@@ -1,16 +1,22 @@
package moe.yuuta.ohmysaf;
+import android.content.Context;
import android.net.Uri;
+import android.os.ParcelFileDescriptor;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.annotation.RequiresApi;
import androidx.annotation.RestrictTo;
import androidx.documentfile.provider.DocumentFile;
import java.io.File;
import java.io.FileFilter;
+import java.io.FileNotFoundException;
import java.io.FilenameFilter;
import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
@@ -18,6 +24,8 @@ import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
+import static android.os.Build.VERSION_CODES.KITKAT;
+
public class SafFile extends File {
private final DocumentFile mOrig;
@@ -342,4 +350,24 @@ public class SafFile extends File {
public URL toURL() throws MalformedURLException {
return new URL(mOrig.getUri().toString());
}
+
+ @Nullable
+ public ParcelFileDescriptor openFileDescriptor(@NonNull Context context, @NonNull String mode) throws FileNotFoundException {
+ return context.getContentResolver().openFileDescriptor(getAndroidUri(), mode);
+ }
+
+ @Nullable
+ public OutputStream openOutputStream(@NonNull Context context, @NonNull String mode) throws FileNotFoundException {
+ return context.getContentResolver().openOutputStream(getAndroidUri(), mode);
+ }
+
+ @Nullable
+ public InputStream openInputStream(@NonNull Context context) throws FileNotFoundException {
+ return context.getContentResolver().openInputStream(getAndroidUri());
+ }
+
+ @RequiresApi(KITKAT)
+ public void takePersistableUriPermission(@NonNull Context context, int modeFlags) {
+ context.getContentResolver().takePersistableUriPermission(getAndroidUri(), modeFlags);
+ }
}