trying to provide a share point
This commit is contained in:
parent
369c95b912
commit
46ec3d504a
6 changed files with 179 additions and 16 deletions
|
|
@ -337,12 +337,13 @@
|
||||||
<Compile Include="OAuth2\YaOAuth2Authenticator.cs" />
|
<Compile Include="OAuth2\YaOAuth2Authenticator.cs" />
|
||||||
<Compile Include="Resources\Resource.Designer.cs" />
|
<Compile Include="Resources\Resource.Designer.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<Compile Include="SendFilesActivity.cs" />
|
||||||
|
<Compile Include="Services\YavscChooserTargetService.cs" />
|
||||||
<Compile Include="Services\GcmListenerService.cs" />
|
<Compile Include="Services\GcmListenerService.cs" />
|
||||||
<Compile Include="Services\GcmRegistrationIntentService.cs" />
|
<Compile Include="Services\GcmRegistrationIntentService.cs" />
|
||||||
<Compile Include="Services\MyGcmIntentService.cs" />
|
<Compile Include="Services\MyGcmIntentService.cs" />
|
||||||
<Compile Include="Services\MyInstanceIdListener.cs" />
|
<Compile Include="Services\MyInstanceIdListener.cs" />
|
||||||
<Compile Include="CompatXFormsApp.cs" />
|
<Compile Include="CompatXFormsApp.cs" />
|
||||||
<Compile Include="YavscShareActionProvider.cs" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="app.config">
|
<None Include="app.config">
|
||||||
|
|
|
||||||
|
|
@ -37,12 +37,17 @@ using Yavsc.Models.Identity;
|
||||||
|
|
||||||
namespace BookAStar.Droid
|
namespace BookAStar.Droid
|
||||||
{
|
{
|
||||||
|
using Android.Runtime;
|
||||||
|
using Android.Support.V4.App;
|
||||||
|
using Android.Support.V4.Content;
|
||||||
using Data;
|
using Data;
|
||||||
using Droid.OAuth;
|
using Droid.OAuth;
|
||||||
using Helpers;
|
using Helpers;
|
||||||
using Interfaces;
|
using Interfaces;
|
||||||
using Model.Auth.Account;
|
using Model.Auth.Account;
|
||||||
[Activity(Name="fr.pschneider.bas.MainActivity", Label = "BookAStar", Theme = "@style/MainTheme", Icon = "@drawable/icon", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
|
using static Android.Manifest;
|
||||||
|
|
||||||
|
[Activity(Name = "fr.pschneider.bas.MainActivity", Label = "BookAStar", Theme = "@style/MainTheme", Icon = "@drawable/icon", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
|
||||||
public class MainActivity :
|
public class MainActivity :
|
||||||
|
|
||||||
// global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity,
|
// global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity,
|
||||||
|
|
@ -54,8 +59,10 @@ namespace BookAStar.Droid
|
||||||
|
|
||||||
TabLayoutResource = Resource.Layout.Tabbar;
|
TabLayoutResource = Resource.Layout.Tabbar;
|
||||||
ToolbarResource = Resource.Layout.Toolbar;
|
ToolbarResource = Resource.Layout.Toolbar;
|
||||||
|
|
||||||
base.OnCreate(bundle);
|
base.OnCreate(bundle);
|
||||||
|
|
||||||
|
// FIXME usefull?
|
||||||
SetPersistent(true);
|
SetPersistent(true);
|
||||||
// global::Xamarin.Forms.Forms.SetTitleBarVisibility(Xamarin.Forms.AndroidTitleBarVisibility.Never);
|
// global::Xamarin.Forms.Forms.SetTitleBarVisibility(Xamarin.Forms.AndroidTitleBarVisibility.Never);
|
||||||
|
|
||||||
|
|
@ -71,7 +78,7 @@ namespace BookAStar.Droid
|
||||||
Android.Webkit.WebView.SetWebContentsDebuggingEnabled(true);
|
Android.Webkit.WebView.SetWebContentsDebuggingEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
IXFormsApp<XFormsCompatApplicationDroid> app =null;
|
IXFormsApp<XFormsCompatApplicationDroid> app = null;
|
||||||
if (!Resolver.IsSet)
|
if (!Resolver.IsSet)
|
||||||
{
|
{
|
||||||
var xfapp = new XFormsCompatAppDroid();
|
var xfapp = new XFormsCompatAppDroid();
|
||||||
|
|
@ -96,7 +103,12 @@ namespace BookAStar.Droid
|
||||||
};
|
};
|
||||||
|
|
||||||
var fapp = new BookAStar.App(this);
|
var fapp = new BookAStar.App(this);
|
||||||
|
|
||||||
|
|
||||||
LoadApplication(fapp);
|
LoadApplication(fapp);
|
||||||
|
|
||||||
|
CheckSharing();
|
||||||
|
|
||||||
// TabLayoutResource = Resource.Layout.Tabbar;
|
// TabLayoutResource = Resource.Layout.Tabbar;
|
||||||
// ToolbarResource = Resource.Layout.Toolbar;
|
// ToolbarResource = Resource.Layout.Toolbar;
|
||||||
/*
|
/*
|
||||||
|
|
@ -109,7 +121,37 @@ namespace BookAStar.Droid
|
||||||
x = typeof(Themes.Android.UnderlineEffect); */
|
x = typeof(Themes.Android.UnderlineEffect); */
|
||||||
|
|
||||||
}
|
}
|
||||||
|
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
|
||||||
|
{
|
||||||
|
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||||
|
if (requestCode == Constants.AllowBeATarget) {
|
||||||
|
if (grantResults.Length > 0)
|
||||||
|
{
|
||||||
|
if (grantResults[0] == Android.Content.PM.Permission.Granted)
|
||||||
|
{
|
||||||
|
// yay!
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Should we show an explanation?
|
||||||
|
if (ActivityCompat.ShouldShowRequestPermissionRationale(this,
|
||||||
|
Permission.BindChooserTargetService))
|
||||||
|
{
|
||||||
|
//Show permission explanation dialog...
|
||||||
|
// Show an expanation to the user *asynchronously* -- don't block
|
||||||
|
// this thread waiting for the user's response! After the user
|
||||||
|
// sees the explanation, try again to request the permission.
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//Never ask again selected, or device policy prohibits the app from having that permission.
|
||||||
|
//So, disable that feature, or fall back to another situation...
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
private SimpleContainer SetIoc(XFormsCompatAppDroid app)
|
private SimpleContainer SetIoc(XFormsCompatAppDroid app)
|
||||||
{
|
{
|
||||||
var resolverContainer = new SimpleContainer();
|
var resolverContainer = new SimpleContainer();
|
||||||
|
|
@ -117,8 +159,8 @@ namespace BookAStar.Droid
|
||||||
|
|
||||||
app.Init(this);
|
app.Init(this);
|
||||||
|
|
||||||
var documents = app.AppDataDirectory;
|
var documents = app.AppDataDirectory;
|
||||||
var pathToDatabase = Path.Combine(documents, "xforms.db");
|
var pathToDatabase = Path.Combine(documents, "xforms.db");
|
||||||
|
|
||||||
resolverContainer.Register<IDevice>(t => AndroidDevice.CurrentDevice)
|
resolverContainer.Register<IDevice>(t => AndroidDevice.CurrentDevice)
|
||||||
.Register<IDisplay>(t => t.Resolve<IDevice>().Display)
|
.Register<IDisplay>(t => t.Resolve<IDevice>().Display)
|
||||||
|
|
@ -156,7 +198,7 @@ namespace BookAStar.Droid
|
||||||
|
|
||||||
public App AppContext
|
public App AppContext
|
||||||
{
|
{
|
||||||
get;set;
|
get; set;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool StartNotifications()
|
bool StartNotifications()
|
||||||
|
|
@ -203,7 +245,7 @@ namespace BookAStar.Droid
|
||||||
base.OnStart();
|
base.OnStart();
|
||||||
if (MainSettings.PushNotifications)
|
if (MainSettings.PushNotifications)
|
||||||
StartNotifications();
|
StartNotifications();
|
||||||
long queryId = Intent.GetLongExtra("BookQueryId",0);
|
long queryId = Intent.GetLongExtra("BookQueryId", 0);
|
||||||
|
|
||||||
if (queryId > 0)
|
if (queryId > 0)
|
||||||
{
|
{
|
||||||
|
|
@ -271,7 +313,8 @@ namespace BookAStar.Droid
|
||||||
|
|
||||||
public async Task<IEnumerable<Account>> GetAndroidAccounts()
|
public async Task<IEnumerable<Account>> GetAndroidAccounts()
|
||||||
{
|
{
|
||||||
return await Task.Run(() => {
|
return await Task.Run(() =>
|
||||||
|
{
|
||||||
var manager = AccountStore.Create(this);
|
var manager = AccountStore.Create(this);
|
||||||
return manager.FindAccountsForService(Constants.ApplicationName);
|
return manager.FindAccountsForService(Constants.ApplicationName);
|
||||||
});
|
});
|
||||||
|
|
@ -335,7 +378,7 @@ namespace BookAStar.Droid
|
||||||
Id = uid,
|
Id = uid,
|
||||||
YavscTokens = tokens
|
YavscTokens = tokens
|
||||||
};
|
};
|
||||||
|
|
||||||
MainSettings.SaveUser(newuser);
|
MainSettings.SaveUser(newuser);
|
||||||
accStore.Save(acc, Constants.ApplicationName);
|
accStore.Save(acc, Constants.ApplicationName);
|
||||||
}
|
}
|
||||||
|
|
@ -405,11 +448,11 @@ namespace BookAStar.Droid
|
||||||
{
|
{
|
||||||
using (var m =
|
using (var m =
|
||||||
new SimpleJsonPostMethod(
|
new SimpleJsonPostMethod(
|
||||||
method, "Bearer "+
|
method, "Bearer " +
|
||||||
MainSettings.CurrentUser.YavscTokens.AccessToken
|
MainSettings.CurrentUser.YavscTokens.AccessToken
|
||||||
))
|
))
|
||||||
{
|
{
|
||||||
return m.Invoke<TAnswer>(arg);
|
return m.Invoke<TAnswer>(arg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -419,7 +462,7 @@ namespace BookAStar.Droid
|
||||||
new SimpleJsonPostMethod(
|
new SimpleJsonPostMethod(
|
||||||
method, "Bearer " +
|
method, "Bearer " +
|
||||||
MainSettings.CurrentUser.YavscTokens.AccessToken
|
MainSettings.CurrentUser.YavscTokens.AccessToken
|
||||||
))
|
))
|
||||||
{
|
{
|
||||||
return m.InvokeJson(arg);
|
return m.InvokeJson(arg);
|
||||||
}
|
}
|
||||||
|
|
@ -427,7 +470,7 @@ namespace BookAStar.Droid
|
||||||
|
|
||||||
public T Resolve<T>()
|
public T Resolve<T>()
|
||||||
{
|
{
|
||||||
return (T) Resolver.Resolve(typeof(T));
|
return (T)Resolver.Resolve(typeof(T));
|
||||||
}
|
}
|
||||||
|
|
||||||
public object Resolve(Type t)
|
public object Resolve(Type t)
|
||||||
|
|
@ -448,6 +491,27 @@ namespace BookAStar.Droid
|
||||||
{
|
{
|
||||||
base.OnRestoreInstanceState(savedInstanceState, persistentState);
|
base.OnRestoreInstanceState(savedInstanceState, persistentState);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void CheckSharing()
|
||||||
|
{
|
||||||
|
// .BIND_CHOOSER_TARGET_SERVICE
|
||||||
|
|
||||||
|
// Here, thisActivity is the current activity
|
||||||
|
if (ContextCompat.CheckSelfPermission(this,
|
||||||
|
Permission.BindChooserTargetService) != Android.Content.PM.Permission.Granted)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
ActivityCompat.RequestPermissions(this,
|
||||||
|
new String[] { Permission.BindChooserTargetService },
|
||||||
|
Constants.AllowBeATarget);
|
||||||
|
|
||||||
|
// Constants.AllowReadContacts is an
|
||||||
|
// app-defined int constant. The callback method gets the
|
||||||
|
// result of the request.
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,21 @@
|
||||||
<category android:name="android.intent.category.LAUNCHER" />
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
|
<service android:name="fr.pschneider.bas.YavscChooserTargetService"
|
||||||
|
android:label="@string/app_name"
|
||||||
|
android:permission="android.permission.BIND_CHOOSER_TARGET_SERVICE">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.service.chooser.ChooserTargetService" />
|
||||||
|
</intent-filter>
|
||||||
|
</service>
|
||||||
|
<activity android:name="fr.pschneider.bas.SendFilesActivity" android:label="@string/app_name">
|
||||||
|
<intent-filter>
|
||||||
|
<action android:name="android.intent.action.SEND" />
|
||||||
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
|
<data android:mimeType="text/plain" />
|
||||||
|
</intent-filter>
|
||||||
|
<meta-data android:name="android.service.chooser.chooser_target_service" android:value="fr.pschneider.bas.YavscChooserTargetService" />
|
||||||
|
</activity>
|
||||||
</application>
|
</application>
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.WAVE_LOCK" />
|
<uses-permission android:name="android.permission.WAVE_LOCK" />
|
||||||
|
|
@ -39,4 +54,15 @@
|
||||||
<uses-permission android:name="android.permission.ACCOUNT_MANAGER" />
|
<uses-permission android:name="android.permission.ACCOUNT_MANAGER" />
|
||||||
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
|
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
|
||||||
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
|
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
|
||||||
|
<uses-permission android:name="android.permission.CAMERA" />
|
||||||
|
<uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT" />
|
||||||
|
<uses-permission android:name="android.permission.CAPTURE_VIDEO_OUTPUT" />
|
||||||
|
<uses-permission android:name="android.permission.CAPTURE_SECURE_VIDEO_OUTPUT" />
|
||||||
|
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
|
||||||
|
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
|
||||||
|
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
|
||||||
|
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
|
||||||
|
<uses-permission android:name="android.permission.PERSISTENT_ACTIVITY" />
|
||||||
|
<uses-permission android:name="android.permission.READ_CONTACTS" />
|
||||||
|
<uses-permission android:name="android.permission.RECORD_AUDIO" />
|
||||||
</manifest>
|
</manifest>
|
||||||
25
BookAStar/BookAStar.Droid/SendFilesActivity.cs
Normal file
25
BookAStar/BookAStar.Droid/SendFilesActivity.cs
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
using Android.App;
|
||||||
|
using Android.Content;
|
||||||
|
using Android.OS;
|
||||||
|
using Android.Runtime;
|
||||||
|
using Android.Views;
|
||||||
|
using Android.Widget;
|
||||||
|
|
||||||
|
namespace BookAStar.Droid
|
||||||
|
{
|
||||||
|
[Activity(Name= "fr.pschneider.bas.SendFilesActivity", Label = "SendFilesActivity")]
|
||||||
|
public class SendFilesActivity : Activity
|
||||||
|
{
|
||||||
|
protected override void OnCreate(Bundle savedInstanceState)
|
||||||
|
{
|
||||||
|
base.OnCreate(savedInstanceState);
|
||||||
|
|
||||||
|
// Create your application here
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
using Android.App;
|
||||||
|
using Android.Content;
|
||||||
|
using Android.OS;
|
||||||
|
using Android.Runtime;
|
||||||
|
using Android.Views;
|
||||||
|
using Android.Widget;
|
||||||
|
using Android.Service.Chooser;
|
||||||
|
|
||||||
|
namespace BookAStar.Droid
|
||||||
|
{
|
||||||
|
[Service(Name = "fr.pschneider.bas.YavscChooserTargetService", Label = "Yavsc share service", Permission = "android.permission.BIND_CHOOSER_TARGET_SERVICE", Icon = "@drawable/icon", Exported = true)]
|
||||||
|
class YavscChooserTargetService : ChooserTargetService
|
||||||
|
{
|
||||||
|
public override IList<ChooserTarget> OnGetChooserTargets(ComponentName targetActivityName, IntentFilter matchedFilter)
|
||||||
|
{
|
||||||
|
Android.Graphics.Drawables.Icon i =
|
||||||
|
Android.Graphics.Drawables.Icon.CreateWithResource(this.BaseContext,
|
||||||
|
Resource.Drawable.icon);
|
||||||
|
ChooserTarget t = new ChooserTarget(
|
||||||
|
new Java.Lang.String(
|
||||||
|
"BookingStar"), i,
|
||||||
|
.5f, new ComponentName(this.BaseContext, ".SendFilesActivity"),
|
||||||
|
null);
|
||||||
|
var res = new List<ChooserTarget>();
|
||||||
|
res.Add(t);
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override IBinder OnBind(Intent intent)
|
||||||
|
{
|
||||||
|
return base.OnBind(intent);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void OnCreate()
|
||||||
|
{
|
||||||
|
base.OnCreate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -22,5 +22,8 @@ namespace BookAStar
|
||||||
public static readonly string SignalRHubsUrl = YavscHomeUrl + "/signalr/hubs";
|
public static readonly string SignalRHubsUrl = YavscHomeUrl + "/signalr/hubs";
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Permissions ids
|
||||||
|
public static int AllowBeATarget = 1;
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue