Generate shortcut icons

pull/177/head
M66B 6 years ago
parent 7480dc68da
commit 5497a91680

@ -166,28 +166,41 @@ class Shortcuts {
@NotNull @NotNull
private static ShortcutInfoCompat.Builder getShortcut(Context context, String email, String name, Uri avatar) { private static ShortcutInfoCompat.Builder getShortcut(Context context, String email, String name, Uri avatar) {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
boolean identicons = prefs.getBoolean("identicons", false);
boolean circular = prefs.getBoolean("circular", true);
Intent intent = new Intent(context, ActivityMain.class); Intent intent = new Intent(context, ActivityMain.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
intent.setAction(Intent.ACTION_SEND); intent.setAction(Intent.ACTION_SEND);
intent.addCategory(Intent.CATEGORY_DEFAULT); intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setData(Uri.parse("mailto:" + email)); intent.setData(Uri.parse("mailto:" + email));
IconCompat icon = null; Bitmap bitmap = null;
if (avatar != null && if (avatar != null &&
Helper.hasPermission(context, Manifest.permission.READ_CONTACTS)) { Helper.hasPermission(context, Manifest.permission.READ_CONTACTS)) {
// Create icon from bitmap because launcher might not have contacts permission // Create icon from bitmap because launcher might not have contacts permission
InputStream is = ContactsContract.Contacts.openContactPhotoInputStream( InputStream is = ContactsContract.Contacts.openContactPhotoInputStream(
context.getContentResolver(), avatar); context.getContentResolver(), avatar);
Bitmap bitmap = BitmapFactory.decodeStream(is); bitmap = BitmapFactory.decodeStream(is);
if (bitmap != null)
icon = IconCompat.createWithBitmap(bitmap);
} }
if (icon == null)
icon = IconCompat.createWithResource(context, R.drawable.ic_shortcut_email);
Set<String> categories = new HashSet<>(Arrays.asList("eu.faircode.email.TEXT_SHARE_TARGET")); boolean identicon = false;
if (bitmap == null) {
int dp = Helper.dp2pixels(context, 96);
if (identicons) {
identicon = true;
bitmap = ImageHelper.generateIdenticon(email, dp, 5, context);
} else
bitmap = ImageHelper.generateLetterIcon(email, name, dp, context);
}
bitmap = ImageHelper.makeCircular(bitmap,
circular && !identicon ? null : Helper.dp2pixels(context, 3));
IconCompat icon = IconCompat.createWithBitmap(bitmap);
String id = (name == null ? email : "\"" + name + "\" <" + email + ">"); String id = (name == null ? email : "\"" + name + "\" <" + email + ">");
Set<String> categories = new HashSet<>(Arrays.asList("eu.faircode.email.TEXT_SHARE_TARGET"));
ShortcutInfoCompat.Builder builder = new ShortcutInfoCompat.Builder(context, id) ShortcutInfoCompat.Builder builder = new ShortcutInfoCompat.Builder(context, id)
.setIcon(icon) .setIcon(icon)
.setShortLabel(name == null ? email : name) .setShortLabel(name == null ? email : name)

Loading…
Cancel
Save