Cod*_*ack 2 android xamarin.forms visual-studio-2019
我一直在寻找相关文章Android.App.Application.Context.PackageManager.GetInstalledApplications
,但我一直无法弄清楚如何获得对它的参考。
您可以使用依赖服务来实现这一点。我将详细介绍,以便其他刚接触 Xamarin 的人也能理解。
首先我们将创建我们的模型。您可以将其命名为InApp.cs
共享目录。
public class InApp
{
public string AppName { get; set; }
public string PackageName { get; set; }
public InApp(string appName, string packageName)
{
AppName = appName;
PackageName = packageName;
}
}
Run Code Online (Sandbox Code Playgroud)
现在我们可以在文件夹中创建依赖服务Android
。将其命名为AndroidService.cs
.
public class AndroidService : IAndroidService
{
public List<InApp> GetIntalledApps()
{
List<InApp> inApps = new List<InApp>();
IList<ApplicationInfo> apps = Android.App.Application.Context.PackageManager.GetInstalledApplications(PackageInfoFlags.MatchAll);
for (int i = 0; i < apps.Count; i++)
{
inApps.Add(new InApp(apps[i].LoadLabel(Android.App.Application.Context.PackageManager), apps[i].PackageName));
}
return inApps;
}
}
Run Code Online (Sandbox Code Playgroud)
上面的代码将获取已安装的应用程序,然后创建List
我们上面创建的模型并返回它。
在运行时,Xamarin 应该知道在哪里查找依赖服务,因此我们应该将其添加到AndroidService
上面创建的类的名称空间之上。
[assembly: Xamarin.Forms.Dependency(typeof(AndroidService))]
Run Code Online (Sandbox Code Playgroud)
IAndroidService
Android
是将在运行时访问文件夹类的接口AndroidService
。我们将在 Shared 目录中创建此类。我们可以将其命名为IAndroidService.cs
.
public interface IAndroidService
{
List<InApp> GetIntalledApps();
}
Run Code Online (Sandbox Code Playgroud)
现在我们已经完成了依赖服务的实现。下一部分是创建ListView
并添加从我们的 Android 服务返回的已安装应用程序列表。
由于我们在 中执行此操作MVVM
,因此我们现在将创建一个视图模型。
InstalledAppViewModel.cs
在共享目录中创建。
public class InstalledAppViewModel: INotifyPropertyChanged
{
private ObservableCollection<InApp> installedApps;
public ObservableCollection<InApp> InstalledApps
{
get { return installedApps; }
set
{
installedApps = value;
}
}
public InstalledAppViewModel()
{
List<InApp> listOfInstalledApps = DependencyService.Get<IAndroidService>().GetIntalledApps();
InstalledApps = new ObservableCollection<InApp>(listOfInstalledApps);
}
public event PropertyChangedEventHandler PropertyChanged;
}
Run Code Online (Sandbox Code Playgroud)
上面,我们已经完成了依赖注入并将方法的返回值添加GetInstalledApps
到我们的Observable
列表中。
现在在您的MainPage.Xaml.Cs
绑定视图模型中。
BindingContext = new InstalledAppViewModel();
Run Code Online (Sandbox Code Playgroud)
在您的MainPage.Xaml
.
<ListView ItemsSource="{Binding InstalledApps}">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Orientation="Vertical">
<StackLayout Orientation="Horizontal" VerticalOptions="CenterAndExpand">
<Label Text="{Binding AppName}" FontSize="Medium" />
</StackLayout>
</StackLayout>
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
Run Code Online (Sandbox Code Playgroud)
在ItemSource
列表视图属性中,您将绑定Observable
我们在视图模型类中创建的列表。
归档时间: |
|
查看次数: |
1568 次 |
最近记录: |