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]);