Create a gist now

Instantly share code, notes, and snippets.

Embed
What would you like to do?
private void handleDropEvent(View view, DragEvent dragEvent) {
ClipData clipData = dragEvent.getClipData();
ClipData.Item item = clipData.getItemAt(0);
Uri uri = item.getUri();
if (uri != null) {
String mimeType = URLConnection.guessContentTypeFromName(new File(uri.getPath()).getName());
if (mimeType == null) {
Snackbar.make(mainLayout, "Can't open file. The file type is unknown.", Snackbar.LENGTH_LONG).show();
} else if (mimeType.startsWith("image")) {
handleImage(uri);
} else {
Intent newIntent = new Intent(Intent.ACTION_VIEW);
Uri contentUri = FileProvider.getUriForFile(this, BuildConfig.APPLICATION_ID + ".provider", new File(uri.getPath()));
newIntent.setDataAndType(contentUri, mimeType);
newIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
List<ResolveInfo> resInfoList = getPackageManager().queryIntentActivities(newIntent, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo resolveInfo : resInfoList) {
String packageName = resolveInfo.activityInfo.packageName;
grantUriPermission(packageName, contentUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
}
try {
startActivity(newIntent);
} catch (ActivityNotFoundException e) {
Snackbar.make(mainLayout, "Sorry, I found no handler for this type of file.", Snackbar.LENGTH_SHORT).show();
} catch (FileUriExposedException ex) {
Snackbar.make(mainLayout, "FileUriExposedException", Snackbar.LENGTH_SHORT).show();
}
}
} else if (item.getText() != null) {
handleText(item.getText());
} else {
Log.e(TAG, "Unknown content: " + clipData);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment