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 @@
+
+
+
+
+
+
+
+
+
+