diff --git a/android/ScratchJr/app/src/main/AndroidManifest.xml b/android/ScratchJr/app/src/main/AndroidManifest.xml
index 42dff0d..68c2303 100644
--- a/android/ScratchJr/app/src/main/AndroidManifest.xml
+++ b/android/ScratchJr/app/src/main/AndroidManifest.xml
@@ -40,12 +40,17 @@
-
+
+
+
+
+
+
-
-
@@ -56,6 +61,16 @@
+
+
+
+
+
+
+
+
+
+
1;
@@ -582,10 +580,13 @@ public class JavaScriptDirectInterface {
File tempFile;
String extension;
+ String mimetype;
if (BuildConfig.APPLICATION_ID.equals("org.pbskids.scratchjr")) {
extension = ".psjr";
+ mimetype = "application/x-pbskids-scratchjr-project";
} else {
extension = ".sjr";
+ mimetype = "application/x-scratchjr-project";
}
try {
@@ -602,17 +603,18 @@ public class JavaScriptDirectInterface {
}
final Intent it = new Intent(Intent.ACTION_SEND);
- it.setType("message/rfc822");
+ it.setType(mimetype);
it.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] {});
- it.putExtra(android.content.Intent.EXTRA_SUBJECT, emailSubject);
+ it.putExtra(android.content.Intent.EXTRA_SUBJECT, fileName);
it.putExtra(android.content.Intent.EXTRA_TEXT, Html.fromHtml(emailBody));
// The stream data is a reference to the temporary file provided by our contentprovider
it.putExtra(Intent.EXTRA_STREAM,
Uri.parse("content://" + ShareContentProvider.AUTHORITY + "/"
+ fileName));
+ Intent shareIntent = Intent.createChooser(it, null);
- _activity.startActivity(it);
+ _activity.startActivity(shareIntent);
}
// Analytics
diff --git a/android/ScratchJr/app/src/main/java/org/scratchjr/android/ScratchJrActivity.java b/android/ScratchJr/app/src/main/java/org/scratchjr/android/ScratchJrActivity.java
index afc7232..6d4f9ca 100644
--- a/android/ScratchJr/app/src/main/java/org/scratchjr/android/ScratchJrActivity.java
+++ b/android/ScratchJr/app/src/main/java/org/scratchjr/android/ScratchJrActivity.java
@@ -310,15 +310,20 @@ public class ScratchJrActivity
String scheme = projectUri.getScheme();
Log.i(LOG_TAG, "receiveProject(scheme): " + scheme);
Log.i(LOG_TAG, "receiveProject(path): " + projectUri.getPath());
- if (scheme == null || !(scheme.equals(ContentResolver.SCHEME_FILE) || scheme.equals(ContentResolver.SCHEME_CONTENT)) ||
- !projectUri.getPath().matches(PROJECT_EXTENSION)) {
+
+ // if scheme isn't file or content, skip import
+ if (scheme == null || !(scheme.equals(ContentResolver.SCHEME_FILE) || scheme.equals(ContentResolver.SCHEME_CONTENT))) {
+ return;
+ }
+ // if scheme is file, then skip if filename doesn't have scratchjr project extension
+ if (scheme.equals(ContentResolver.SCHEME_FILE) && !projectUri.getPath().matches(PROJECT_EXTENSION)) {
return;
}
// Read the project one byte at a time into a buffer
ByteArrayOutputStream projectData = new ByteArrayOutputStream();
try {
InputStream is = getContentResolver().openInputStream(projectUri);
-
+
byte[] readByte = new byte[1];
while ((is.read(readByte)) == 1) {
projectData.write(readByte[0]);