Skip to content

Commit

Permalink
[TIMOB-25363] Fix handling of EXTRA_* URIs
Browse files Browse the repository at this point in the history
  • Loading branch information
Gary Mathews committed Oct 27, 2017
1 parent a1cb870 commit 925fdb0
Showing 1 changed file with 44 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,12 @@
import org.appcelerator.titanium.TiC;
import org.appcelerator.titanium.util.TiConvert;

import android.content.ClipData;
import android.graphics.Bitmap;
import android.content.ComponentName;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.text.TextUtils;

@Kroll.proxy(propertyAccessors = {
Expand Down Expand Up @@ -191,7 +193,7 @@ public void handleCreationDict(KrollDict dict)
// if you have both you _must_ call setDataAndType
if (data != null) {
Uri dataUri = null;
if (data.startsWith("file://")) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && data.startsWith("file://")) {
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
dataUri = TiFileProvider.createUriFrom(data);
} else {
Expand Down Expand Up @@ -261,33 +263,50 @@ public int getFlags()
@Kroll.method
public void putExtraUri(String key, Object value)
{
if (value == null) {
return;
}

if (value instanceof String) {
String extraString = (String) value;
Uri extraUri = null;
if (extraString.startsWith("file://")) {
if (value == null) {
return;
}

if (value instanceof String) {
String extraString = (String) value;

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && extraString.startsWith("file://")) {
Uri contentUri = TiFileProvider.createUriFrom(extraString);
ClipData clipData = ClipData.newRawUri("FILE", contentUri);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
extraUri = TiFileProvider.createUriFrom(extraString);
intent.setClipData(clipData);
intent.putExtra(key, contentUri);
} else {
extraUri = Uri.parse(extraString);
intent.putExtra(key, Uri.parse(extraString));
}
} else if (value instanceof Object[]) {
try {
Object[] objVal = (Object[]) value;
String[] stringArray = Arrays.copyOf(objVal, objVal.length, String[].class);
ArrayList<Uri> imageUris = new ArrayList<Uri>();
ClipData clipData = null;
for(String s : stringArray) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && s.startsWith("file://")) {
Uri contentUri = TiFileProvider.createUriFrom(s);
imageUris.add(contentUri);
if (clipData == null) {
clipData = ClipData.newRawUri("FILES", contentUri);
} else {
clipData.addItem(new ClipData.Item(contentUri));
}
} else {
imageUris.add(Uri.parse(s));
}
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setClipData(clipData);
}
intent.putParcelableArrayListExtra(key, imageUris);
} catch (Exception ex) {
Log.e(TAG, "Error unimplemented put conversion ", ex.getMessage());
}
intent.putExtra(key, extraUri);
} else if (value instanceof Object[]) {
try {
Object[] objVal = (Object[]) value;
String[] stringArray = Arrays.copyOf(objVal, objVal.length, String[].class);
ArrayList<Uri> imageUris = new ArrayList<Uri>();
for(String s: stringArray) {
imageUris.add(Uri.parse(s));
}
intent.putParcelableArrayListExtra(key, imageUris);
} catch (Exception ex) {
Log.e(TAG, "Error unimplemented put conversion ", ex.getMessage());
}
}
}
}

@Kroll.method
Expand Down

0 comments on commit 925fdb0

Please sign in to comment.