From 630301cbd9e3d565c5ee687dfd7312f691330b03 Mon Sep 17 00:00:00 2001 From: YuutaW <17158086+trumeet@users.noreply.github.com> Date: Fri, 19 Apr 2019 10:43:22 -0700 Subject: feat(library/demo): add some simple APIs Signed-off-by: YuutaW <17158086+Trumeet@users.noreply.github.com> --- .../java/moe/yuuta/ohmysafdemo/MainActivity.java | 10 ++++---- .../src/main/java/moe/yuuta/ohmysaf/SafFile.java | 28 ++++++++++++++++++++++ 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); + } } -- cgit v1.2.3