diff --git a/src/Android/Android.csproj b/src/Android/Android.csproj
index b18fd4dd5..c2f1a3de5 100644
--- a/src/Android/Android.csproj
+++ b/src/Android/Android.csproj
@@ -17,7 +17,7 @@
Off
Properties\AndroidManifest.xml
True
- v7.1
+ v8.0
armeabi,armeabi-v7a,x86
Xamarin.Android.Net.AndroidClientHandler
@@ -308,6 +308,7 @@
+
@@ -944,6 +945,9 @@
+
+
+
diff --git a/src/Android/AutofillService.cs b/src/Android/AutofillService.cs
index 93f7def90..cc0fa0020 100644
--- a/src/Android/AutofillService.cs
+++ b/src/Android/AutofillService.cs
@@ -11,7 +11,7 @@ using XLabs.Ioc;
namespace Bit.Android
{
- [Service(Permission = "android.permission.BIND_ACCESSIBILITY_SERVICE", Label = "bitwarden")]
+ [Service(Permission = global::Android.Manifest.Permission.BindAccessibilityService, Label = "bitwarden")]
[IntentFilter(new string[] { "android.accessibilityservice.AccessibilityService" })]
[MetaData("android.accessibilityservice", Resource = "@xml/accessibilityservice")]
public class AutofillService : AccessibilityService
diff --git a/src/Android/MainActivity.cs b/src/Android/MainActivity.cs
index 430512b6d..124466205 100644
--- a/src/Android/MainActivity.cs
+++ b/src/Android/MainActivity.cs
@@ -74,6 +74,7 @@ namespace Bit.Android
_settings = Resolver.Resolve();
LoadApplication(new App.App(
uri,
+ Intent.GetBooleanExtra("myVaultTile", false),
Resolver.Resolve(),
Resolver.Resolve(),
Resolver.Resolve(),
diff --git a/src/Android/MyVaultTileService.cs b/src/Android/MyVaultTileService.cs
new file mode 100644
index 000000000..a430b12fb
--- /dev/null
+++ b/src/Android/MyVaultTileService.cs
@@ -0,0 +1,58 @@
+using Android.App;
+using Android.Content;
+using Android.Service.QuickSettings;
+using Java.Lang;
+
+namespace Bit.Android
+{
+ [Service(Permission = global::Android.Manifest.Permission.BindQuickSettingsTile,
+ Label = "@string/MyVault", Icon = "@drawable/shield")]
+ [IntentFilter(new string[] { ActionQsTile })]
+ public class MyVaultTileService : TileService
+ {
+ public override void OnTileAdded()
+ {
+ base.OnTileAdded();
+ }
+
+ public override void OnStartListening()
+ {
+ base.OnStartListening();
+ }
+
+ public override void OnStopListening()
+ {
+ base.OnStopListening();
+ }
+
+ public override void OnTileRemoved()
+ {
+ base.OnTileRemoved();
+ }
+
+ public override void OnClick()
+ {
+ base.OnClick();
+
+ if(IsLocked)
+ {
+ UnlockAndRun(new Runnable(() =>
+ {
+ LaunchMyVault();
+ }));
+ }
+ else
+ {
+ LaunchMyVault();
+ }
+ }
+
+ private void LaunchMyVault()
+ {
+ var intent = new Intent(this, typeof(SplashActivity));
+ intent.SetFlags(ActivityFlags.NewTask | ActivityFlags.SingleTop | ActivityFlags.ClearTop);
+ intent.PutExtra("myVaultTile", true);
+ StartActivityAndCollapse(intent);
+ }
+ }
+}
diff --git a/src/Android/Resources/Resource.Designer.cs b/src/Android/Resources/Resource.Designer.cs
index f70ef35ee..4ed63b046 100644
--- a/src/Android/Resources/Resource.Designer.cs
+++ b/src/Android/Resources/Resource.Designer.cs
@@ -2769,8 +2769,8 @@ namespace Bit.Android
// aapt resource value: 0x7f0200e7
public const int notification_sm = 2130837735;
- // aapt resource value: 0x7f0200f9
- public const int notification_template_icon_bg = 2130837753;
+ // aapt resource value: 0x7f0200fa
+ public const int notification_template_icon_bg = 2130837754;
// aapt resource value: 0x7f0200e8
public const int paperclip = 2130837736;
@@ -2797,31 +2797,34 @@ namespace Bit.Android
public const int share_tools = 2130837743;
// aapt resource value: 0x7f0200f0
- public const int splash_screen = 2130837744;
+ public const int shield = 2130837744;
// aapt resource value: 0x7f0200f1
- public const int star = 2130837745;
+ public const int splash_screen = 2130837745;
// aapt resource value: 0x7f0200f2
- public const int star_selected = 2130837746;
+ public const int star = 2130837746;
// aapt resource value: 0x7f0200f3
- public const int tools = 2130837747;
+ public const int star_selected = 2130837747;
// aapt resource value: 0x7f0200f4
- public const int tools_selected = 2130837748;
+ public const int tools = 2130837748;
// aapt resource value: 0x7f0200f5
- public const int trash = 2130837749;
+ public const int tools_selected = 2130837749;
// aapt resource value: 0x7f0200f6
- public const int upload = 2130837750;
+ public const int trash = 2130837750;
// aapt resource value: 0x7f0200f7
- public const int user = 2130837751;
+ public const int upload = 2130837751;
// aapt resource value: 0x7f0200f8
- public const int yubikey = 2130837752;
+ public const int user = 2130837752;
+
+ // aapt resource value: 0x7f0200f9
+ public const int yubikey = 2130837753;
static Drawable()
{
@@ -3756,6 +3759,9 @@ namespace Bit.Android
// aapt resource value: 0x7f080046
public const int Hello = 2131230790;
+ // aapt resource value: 0x7f08009a
+ public const int MyVault = 2131230874;
+
// aapt resource value: 0x7f08002e
public const int abc_action_bar_home_description = 2131230766;
diff --git a/src/Android/Resources/drawable/shield.png b/src/Android/Resources/drawable/shield.png
new file mode 100644
index 000000000..68d828f12
Binary files /dev/null and b/src/Android/Resources/drawable/shield.png differ
diff --git a/src/Android/Resources/values/strings.xml b/src/Android/Resources/values/strings.xml
index 4220f86af..bdd7c583e 100644
--- a/src/Android/Resources/values/strings.xml
+++ b/src/Android/Resources/values/strings.xml
@@ -5,4 +5,7 @@
accessibility service by tapping the toggle switch above, then press OK on the confirmation pop-up. You can then press
the back button twice to return to the main bitwarden app.
+
+ My Vault
+
diff --git a/src/Android/SplashActivity.cs b/src/Android/SplashActivity.cs
index ea1c1b4fd..4dfb8acfb 100644
--- a/src/Android/SplashActivity.cs
+++ b/src/Android/SplashActivity.cs
@@ -7,8 +7,8 @@ using System.Threading.Tasks;
namespace Bit.Android
{
- [Activity(Theme = "@style/BitwardenTheme.Splash",
- MainLauncher = true,
+ [Activity(Theme = "@style/BitwardenTheme.Splash",
+ MainLauncher = true,
NoHistory = true,
WindowSoftInputMode = global::Android.Views.SoftInput.StateHidden)]
public class SplashActivity : AppCompatActivity
@@ -23,7 +23,9 @@ namespace Bit.Android
base.OnResume();
var startupWork = new Task(() =>
{
- StartActivity(new Intent(Application.Context, typeof(MainActivity)));
+ var mainIntent = new Intent(Application.Context, typeof(MainActivity));
+ mainIntent.PutExtra("myVaultTile", Intent.GetBooleanExtra("myVaultTile", false));
+ StartActivity(mainIntent);
});
startupWork.Start();
diff --git a/src/App/App.cs b/src/App/App.cs
index 64f6de8d6..c946660e8 100644
--- a/src/App/App.cs
+++ b/src/App/App.cs
@@ -35,6 +35,7 @@ namespace Bit.App
public App(
string uri,
+ bool myVault,
IAuthService authService,
IConnectivity connectivity,
IUserDialogs userDialogs,
@@ -71,7 +72,7 @@ namespace Bit.App
}
else if(authService.IsAuthenticated)
{
- MainPage = new MainPage();
+ MainPage = new MainPage(myVault: myVault);
}
else
{
diff --git a/src/App/Pages/MainPage.cs b/src/App/Pages/MainPage.cs
index 50f686ae3..e6e16d206 100644
--- a/src/App/Pages/MainPage.cs
+++ b/src/App/Pages/MainPage.cs
@@ -7,7 +7,7 @@ namespace Bit.App.Pages
{
public class MainPage : ExtendedTabbedPage
{
- public MainPage(string uri = null)
+ public MainPage(string uri = null, bool myVault = false)
{
TintColor = Color.FromHex("3c8dbc");
@@ -33,7 +33,7 @@ namespace Bit.App.Pages
Children.Add(toolsNavigation);
Children.Add(settingsNavigation);
- if(uri != null)
+ if(myVault || uri != null)
{
SelectedItem = vaultNavigation;
}
diff --git a/src/iOS/AppDelegate.cs b/src/iOS/AppDelegate.cs
index 6e31ee15e..bd3bda698 100644
--- a/src/iOS/AppDelegate.cs
+++ b/src/iOS/AppDelegate.cs
@@ -59,6 +59,7 @@ namespace Bit.iOS
LoadApplication(new App.App(
null,
+ false,
Resolver.Resolve(),
Resolver.Resolve(),
Resolver.Resolve(),
diff --git a/test/Android.Test/Android.Test.csproj b/test/Android.Test/Android.Test.csproj
index 71d563072..b491f0b1e 100644
--- a/test/Android.Test/Android.Test.csproj
+++ b/test/Android.Test/Android.Test.csproj
@@ -16,7 +16,7 @@
Resources\Resource.Designer.cs
Off
True
- v7.1
+ v8.0
Properties\AndroidManifest.xml