Xamarin UWP:front/rear 中的应用程序(方法不存在?)
Xamarin UWP : app in front/rear (method unexisting ?)
我在 xamarin 中有一个应用程序可以侦听文件夹并在创建文件时执行一些操作。
但问题是我需要能够:
- 创建文件时将我的应用放在前面
- 当 acyion 完成后,将我的应用程序推到后面
我开始回复
Window.Current.Activate();
但这只有在我的应用程序未最小化时才有效(应用程序不在第一视图中)
我已经试过了:
IList<AppDiagnosticInfo> infos = await AppDiagnosticInfo.RequestInfoForAppAsync();
IList<AppResourceGroupInfo> resourceInfos = infos[0].GetResourceGroups();
await resourceInfos[0].StartSuspendAsync();
但是visual studio告诉我
AppResourceGroupInfo don't have a definition for StartSuspendAsync()
但文档中提到了它 AppResourceGroupInfo.StartSuspendAsync Method
有人有想法吗?
更新 [2020-04-29 16:48] :
这是一个pcl项目
目的是利用依赖服务在平台功能上有不同的表现(已经实现只需要front/rear
pcl 中的界面
public interface IWindowManager
{
void Minimize();
void Maximize();
}
在 uwp
class WindowManager : IWindowManager
{
public async void Maximize()
{
try
{
Window.Current.Activate();
}
catch(Exception ex)
{
DependencyService.Get<IErrorLogger>().LogError(ex);
}
}
public async void Minimize()
{
IList<AppDiagnosticInfo> infos = await AppDiagnosticInfo.RequestInfoForAppAsync();
IList<AppResourceGroupInfo> resourceInfos = infos[0].GetResourceGroups();
resourceInfos[0].StartSuspendAsync();
}
}
正如我所说的 StartSuspendAsync() 遇到了一些问题
AppResourceGroupInfo don't have a definition for StartSuspendAsync()
源自官方文档,StartSuspendAsync()
在 Windows 10 更新 1803(内部版本 17134)中可用。所以请将UWP项目的mini版本编辑为17134。
but that only work if my app is not minimize (app not in first view)
要制作应用 foreground,您可以使用以下代码。
IEnumerable<AppListEntry> appListEntries = await Package.Current.GetAppListEntriesAsync();
await appListEntries.First().LaunchAsync();
更新
如果上述方法不起作用,请尝试为 UWP 应用程序注册 protocol 并使用 Windows.System.Launcher.LaunchUriAsync
方法启动它。
public async void Maximize()
{
try
{
await Windows.System.Launcher.LaunchUriAsync(new Uri("testapp:"));
}
catch (Exception ex)
{
Debug.Write(ex);
}
}
我在 xamarin 中有一个应用程序可以侦听文件夹并在创建文件时执行一些操作。 但问题是我需要能够:
- 创建文件时将我的应用放在前面
- 当 acyion 完成后,将我的应用程序推到后面
我开始回复
Window.Current.Activate();
但这只有在我的应用程序未最小化时才有效(应用程序不在第一视图中) 我已经试过了:
IList<AppDiagnosticInfo> infos = await AppDiagnosticInfo.RequestInfoForAppAsync();
IList<AppResourceGroupInfo> resourceInfos = infos[0].GetResourceGroups();
await resourceInfos[0].StartSuspendAsync();
但是visual studio告诉我
AppResourceGroupInfo don't have a definition for StartSuspendAsync()
但文档中提到了它 AppResourceGroupInfo.StartSuspendAsync Method
有人有想法吗?
更新 [2020-04-29 16:48] :
这是一个pcl项目
目的是利用依赖服务在平台功能上有不同的表现(已经实现只需要front/rear
pcl 中的界面
public interface IWindowManager
{
void Minimize();
void Maximize();
}
在 uwp
class WindowManager : IWindowManager
{
public async void Maximize()
{
try
{
Window.Current.Activate();
}
catch(Exception ex)
{
DependencyService.Get<IErrorLogger>().LogError(ex);
}
}
public async void Minimize()
{
IList<AppDiagnosticInfo> infos = await AppDiagnosticInfo.RequestInfoForAppAsync();
IList<AppResourceGroupInfo> resourceInfos = infos[0].GetResourceGroups();
resourceInfos[0].StartSuspendAsync();
}
}
正如我所说的 StartSuspendAsync() 遇到了一些问题
AppResourceGroupInfo don't have a definition for StartSuspendAsync()
源自官方文档,StartSuspendAsync()
在 Windows 10 更新 1803(内部版本 17134)中可用。所以请将UWP项目的mini版本编辑为17134。
but that only work if my app is not minimize (app not in first view)
要制作应用 foreground,您可以使用以下代码。
IEnumerable<AppListEntry> appListEntries = await Package.Current.GetAppListEntriesAsync();
await appListEntries.First().LaunchAsync();
更新
如果上述方法不起作用,请尝试为 UWP 应用程序注册 protocol 并使用 Windows.System.Launcher.LaunchUriAsync
方法启动它。
public async void Maximize()
{
try
{
await Windows.System.Launcher.LaunchUriAsync(new Uri("testapp:"));
}
catch (Exception ex)
{
Debug.Write(ex);
}
}