qs tile to quickly launch my vault (android)

This commit is contained in:
Kyle Spearrin 2017-09-19 15:55:15 -04:00
parent ea1b584436
commit 5950c33a43
12 changed files with 96 additions and 20 deletions

View file

@ -17,7 +17,7 @@
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies> <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest> <AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
<AndroidUseLatestPlatformSdk>True</AndroidUseLatestPlatformSdk> <AndroidUseLatestPlatformSdk>True</AndroidUseLatestPlatformSdk>
<TargetFrameworkVersion>v7.1</TargetFrameworkVersion> <TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
<AndroidSupportedAbis>armeabi,armeabi-v7a,x86</AndroidSupportedAbis> <AndroidSupportedAbis>armeabi,armeabi-v7a,x86</AndroidSupportedAbis>
<AndroidHttpClientHandlerType>Xamarin.Android.Net.AndroidClientHandler</AndroidHttpClientHandlerType> <AndroidHttpClientHandlerType>Xamarin.Android.Net.AndroidClientHandler</AndroidHttpClientHandlerType>
<AndroidStoreUncompressedFileExtensions /> <AndroidStoreUncompressedFileExtensions />
@ -308,6 +308,7 @@
<Compile Include="Controls\ExtendedTextCellRenderer.cs" /> <Compile Include="Controls\ExtendedTextCellRenderer.cs" />
<Compile Include="Controls\ExtendedPickerRenderer.cs" /> <Compile Include="Controls\ExtendedPickerRenderer.cs" />
<Compile Include="Controls\ExtendedEntryRenderer.cs" /> <Compile Include="Controls\ExtendedEntryRenderer.cs" />
<Compile Include="MyVaultTileService.cs" />
<Compile Include="Services\HttpService.cs" /> <Compile Include="Services\HttpService.cs" />
<Compile Include="Services\AndroidKeyStoreStorageService.cs" /> <Compile Include="Services\AndroidKeyStoreStorageService.cs" />
<Compile Include="Services\LocalizeService.cs" /> <Compile Include="Services\LocalizeService.cs" />
@ -944,6 +945,9 @@
<ItemGroup> <ItemGroup>
<AndroidResource Include="Resources\drawable-xxxhdpi\cog.png" /> <AndroidResource Include="Resources\drawable-xxxhdpi\cog.png" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable\shield.png" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" /> <Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
<Import Project="..\..\packages\Xamarin.Android.Support.Vector.Drawable.23.3.0\build\Xamarin.Android.Support.Vector.Drawable.targets" Condition="Exists('..\..\packages\Xamarin.Android.Support.Vector.Drawable.23.3.0\build\Xamarin.Android.Support.Vector.Drawable.targets')" /> <Import Project="..\..\packages\Xamarin.Android.Support.Vector.Drawable.23.3.0\build\Xamarin.Android.Support.Vector.Drawable.targets" Condition="Exists('..\..\packages\Xamarin.Android.Support.Vector.Drawable.23.3.0\build\Xamarin.Android.Support.Vector.Drawable.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">

View file

@ -11,7 +11,7 @@ using XLabs.Ioc;
namespace Bit.Android 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" })] [IntentFilter(new string[] { "android.accessibilityservice.AccessibilityService" })]
[MetaData("android.accessibilityservice", Resource = "@xml/accessibilityservice")] [MetaData("android.accessibilityservice", Resource = "@xml/accessibilityservice")]
public class AutofillService : AccessibilityService public class AutofillService : AccessibilityService

View file

@ -74,6 +74,7 @@ namespace Bit.Android
_settings = Resolver.Resolve<ISettings>(); _settings = Resolver.Resolve<ISettings>();
LoadApplication(new App.App( LoadApplication(new App.App(
uri, uri,
Intent.GetBooleanExtra("myVaultTile", false),
Resolver.Resolve<IAuthService>(), Resolver.Resolve<IAuthService>(),
Resolver.Resolve<IConnectivity>(), Resolver.Resolve<IConnectivity>(),
Resolver.Resolve<IUserDialogs>(), Resolver.Resolve<IUserDialogs>(),

View file

@ -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);
}
}
}

View file

@ -2769,8 +2769,8 @@ namespace Bit.Android
// aapt resource value: 0x7f0200e7 // aapt resource value: 0x7f0200e7
public const int notification_sm = 2130837735; public const int notification_sm = 2130837735;
// aapt resource value: 0x7f0200f9 // aapt resource value: 0x7f0200fa
public const int notification_template_icon_bg = 2130837753; public const int notification_template_icon_bg = 2130837754;
// aapt resource value: 0x7f0200e8 // aapt resource value: 0x7f0200e8
public const int paperclip = 2130837736; public const int paperclip = 2130837736;
@ -2797,31 +2797,34 @@ namespace Bit.Android
public const int share_tools = 2130837743; public const int share_tools = 2130837743;
// aapt resource value: 0x7f0200f0 // aapt resource value: 0x7f0200f0
public const int splash_screen = 2130837744; public const int shield = 2130837744;
// aapt resource value: 0x7f0200f1 // aapt resource value: 0x7f0200f1
public const int star = 2130837745; public const int splash_screen = 2130837745;
// aapt resource value: 0x7f0200f2 // aapt resource value: 0x7f0200f2
public const int star_selected = 2130837746; public const int star = 2130837746;
// aapt resource value: 0x7f0200f3 // aapt resource value: 0x7f0200f3
public const int tools = 2130837747; public const int star_selected = 2130837747;
// aapt resource value: 0x7f0200f4 // aapt resource value: 0x7f0200f4
public const int tools_selected = 2130837748; public const int tools = 2130837748;
// aapt resource value: 0x7f0200f5 // aapt resource value: 0x7f0200f5
public const int trash = 2130837749; public const int tools_selected = 2130837749;
// aapt resource value: 0x7f0200f6 // aapt resource value: 0x7f0200f6
public const int upload = 2130837750; public const int trash = 2130837750;
// aapt resource value: 0x7f0200f7 // aapt resource value: 0x7f0200f7
public const int user = 2130837751; public const int upload = 2130837751;
// aapt resource value: 0x7f0200f8 // 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() static Drawable()
{ {
@ -3756,6 +3759,9 @@ namespace Bit.Android
// aapt resource value: 0x7f080046 // aapt resource value: 0x7f080046
public const int Hello = 2131230790; public const int Hello = 2131230790;
// aapt resource value: 0x7f08009a
public const int MyVault = 2131230874;
// aapt resource value: 0x7f08002e // aapt resource value: 0x7f08002e
public const int abc_action_bar_home_description = 2131230766; public const int abc_action_bar_home_description = 2131230766;

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

@ -5,4 +5,7 @@
accessibility service by tapping the toggle switch above, then press OK on the confirmation pop-up. You can then press 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. the back button twice to return to the main bitwarden app.
</string> </string>
<string name="MyVault">
My Vault
</string>
</resources> </resources>

View file

@ -23,7 +23,9 @@ namespace Bit.Android
base.OnResume(); base.OnResume();
var startupWork = new Task(() => 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(); startupWork.Start();

View file

@ -35,6 +35,7 @@ namespace Bit.App
public App( public App(
string uri, string uri,
bool myVault,
IAuthService authService, IAuthService authService,
IConnectivity connectivity, IConnectivity connectivity,
IUserDialogs userDialogs, IUserDialogs userDialogs,
@ -71,7 +72,7 @@ namespace Bit.App
} }
else if(authService.IsAuthenticated) else if(authService.IsAuthenticated)
{ {
MainPage = new MainPage(); MainPage = new MainPage(myVault: myVault);
} }
else else
{ {

View file

@ -7,7 +7,7 @@ namespace Bit.App.Pages
{ {
public class MainPage : ExtendedTabbedPage public class MainPage : ExtendedTabbedPage
{ {
public MainPage(string uri = null) public MainPage(string uri = null, bool myVault = false)
{ {
TintColor = Color.FromHex("3c8dbc"); TintColor = Color.FromHex("3c8dbc");
@ -33,7 +33,7 @@ namespace Bit.App.Pages
Children.Add(toolsNavigation); Children.Add(toolsNavigation);
Children.Add(settingsNavigation); Children.Add(settingsNavigation);
if(uri != null) if(myVault || uri != null)
{ {
SelectedItem = vaultNavigation; SelectedItem = vaultNavigation;
} }

View file

@ -59,6 +59,7 @@ namespace Bit.iOS
LoadApplication(new App.App( LoadApplication(new App.App(
null, null,
false,
Resolver.Resolve<IAuthService>(), Resolver.Resolve<IAuthService>(),
Resolver.Resolve<IConnectivity>(), Resolver.Resolve<IConnectivity>(),
Resolver.Resolve<IUserDialogs>(), Resolver.Resolve<IUserDialogs>(),

View file

@ -16,7 +16,7 @@
<AndroidResgenFile>Resources\Resource.Designer.cs</AndroidResgenFile> <AndroidResgenFile>Resources\Resource.Designer.cs</AndroidResgenFile>
<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies> <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
<AndroidUseLatestPlatformSdk>True</AndroidUseLatestPlatformSdk> <AndroidUseLatestPlatformSdk>True</AndroidUseLatestPlatformSdk>
<TargetFrameworkVersion>v7.1</TargetFrameworkVersion> <TargetFrameworkVersion>v8.0</TargetFrameworkVersion>
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest> <AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">