From e145a5e66de671bc9f66cb11f28ba2b0d86032c0 Mon Sep 17 00:00:00 2001 From: Tobias Brunner Date: Tue, 19 Jun 2018 12:32:55 +0200 Subject: [PATCH] android: Use modern shortcuts on Android 8+ --- .../android/app/src/main/AndroidManifest.xml | 3 ++- .../android/ui/VpnProfileSelectActivity.java | 15 ++++++++------ .../res/mipmap-anydpi-v26/ic_shortcut.xml | 19 ++++++++++++++++++ .../main/res/mipmap-anydpi/ic_shortcut.xml | 17 ++++++++++++++++ .../res/mipmap-xxxhdpi-v26/ic_shortcut_bg.png | Bin 0 -> 3185 bytes .../res/mipmap-xxxhdpi-v26/ic_shortcut_fg.png | Bin 0 -> 17725 bytes 6 files changed, 47 insertions(+), 7 deletions(-) create mode 100644 src/frontends/android/app/src/main/res/mipmap-anydpi-v26/ic_shortcut.xml create mode 100644 src/frontends/android/app/src/main/res/mipmap-anydpi/ic_shortcut.xml create mode 100644 src/frontends/android/app/src/main/res/mipmap-xxxhdpi-v26/ic_shortcut_bg.png create mode 100644 src/frontends/android/app/src/main/res/mipmap-xxxhdpi-v26/ic_shortcut_fg.png diff --git a/src/frontends/android/app/src/main/AndroidManifest.xml b/src/frontends/android/app/src/main/AndroidManifest.xml index ab3725b56..2a75d05ab 100644 --- a/src/frontends/android/app/src/main/AndroidManifest.xml +++ b/src/frontends/android/app/src/main/AndroidManifest.xml @@ -80,7 +80,8 @@ + android:label="@string/strongswan_shortcut" + android:icon="@mipmap/ic_shortcut" > diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileSelectActivity.java b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileSelectActivity.java index 27cecc7e9..fe3d01322 100644 --- a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileSelectActivity.java +++ b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileSelectActivity.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012 Tobias Brunner + * Copyright (C) 2012-2018 Tobias Brunner * HSR Hochschule fuer Technik Rapperswil * * This program is free software; you can redistribute it and/or modify it @@ -17,6 +17,9 @@ package org.strongswan.android.ui; import android.content.Intent; import android.os.Bundle; +import android.support.v4.content.pm.ShortcutInfoCompat; +import android.support.v4.content.pm.ShortcutManagerCompat; +import android.support.v4.graphics.drawable.IconCompat; import android.support.v7.app.AppCompatActivity; import org.strongswan.android.R; @@ -42,11 +45,11 @@ public class VpnProfileSelectActivity extends AppCompatActivity implements OnVpn Intent shortcut = new Intent(VpnProfileControlActivity.START_PROFILE); shortcut.putExtra(VpnProfileControlActivity.EXTRA_VPN_PROFILE_ID, profile.getUUID().toString()); - Intent intent = new Intent(); - intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcut); - intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, profile.getName()); - intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(this, R.drawable.ic_launcher)); - setResult(RESULT_OK, intent); + ShortcutInfoCompat.Builder builder = new ShortcutInfoCompat.Builder(this, profile.getUUID().toString()); + builder.setIntent(shortcut); + builder.setShortLabel(profile.getName()); + builder.setIcon(IconCompat.createWithResource(this, R.mipmap.ic_shortcut)); + setResult(RESULT_OK, ShortcutManagerCompat.createShortcutResultIntent(this, builder.build())); finish(); } } diff --git a/src/frontends/android/app/src/main/res/mipmap-anydpi-v26/ic_shortcut.xml b/src/frontends/android/app/src/main/res/mipmap-anydpi-v26/ic_shortcut.xml new file mode 100644 index 000000000..6aea2ffbf --- /dev/null +++ b/src/frontends/android/app/src/main/res/mipmap-anydpi-v26/ic_shortcut.xml @@ -0,0 +1,19 @@ + + + + + + diff --git a/src/frontends/android/app/src/main/res/mipmap-anydpi/ic_shortcut.xml b/src/frontends/android/app/src/main/res/mipmap-anydpi/ic_shortcut.xml new file mode 100644 index 000000000..653d08006 --- /dev/null +++ b/src/frontends/android/app/src/main/res/mipmap-anydpi/ic_shortcut.xml @@ -0,0 +1,17 @@ + + + \ No newline at end of file diff --git a/src/frontends/android/app/src/main/res/mipmap-xxxhdpi-v26/ic_shortcut_bg.png b/src/frontends/android/app/src/main/res/mipmap-xxxhdpi-v26/ic_shortcut_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..76532253cfa353c39e9afea44bc7835763513540 GIT binary patch literal 3185 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 literal 0 HcmV?d00001