diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ee57323d5..1bab9be06 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -223,5 +223,15 @@ + + + + diff --git a/app/src/main/java/org/isoron/uhabits/activities/BaseScreen.java b/app/src/main/java/org/isoron/uhabits/activities/BaseScreen.java index 1954c7c42..64621414c 100644 --- a/app/src/main/java/org/isoron/uhabits/activities/BaseScreen.java +++ b/app/src/main/java/org/isoron/uhabits/activities/BaseScreen.java @@ -40,6 +40,7 @@ import java.io.*; import static android.os.Build.VERSION.*; import static android.os.Build.VERSION_CODES.*; +import static android.support.v4.content.FileProvider.*; /** * Base class for all screens in the application. @@ -50,6 +51,8 @@ import static android.os.Build.VERSION_CODES.*; */ public class BaseScreen { + public static final int REQUEST_CREATE_DOCUMENT = 1; + protected BaseActivity activity; @Nullable @@ -230,11 +233,14 @@ public class BaseScreen public void showSendFileScreen(@NonNull String archiveFilename) { + File file = new File(archiveFilename); + Uri fileUri = getUriForFile(activity, "org.isoron.uhabits", file); + Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); intent.setType("application/zip"); - intent.putExtra(Intent.EXTRA_STREAM, - Uri.fromFile(new File(archiveFilename))); + intent.putExtra(Intent.EXTRA_STREAM, fileUri); + intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); activity.startActivity(intent); } diff --git a/app/src/main/res/xml/file_paths.xml b/app/src/main/res/xml/file_paths.xml new file mode 100644 index 000000000..d97286ddf --- /dev/null +++ b/app/src/main/res/xml/file_paths.xml @@ -0,0 +1,27 @@ + + + + + + + + + +