Xamarin.安卓系统推出软件包名称的应用程序



我正在尝试在Xamarin 中构建一个Home Launcher应用程序

目前,我有一个Xamarin表单应用程序,可以通过界面访问Xamarin Android。在Xamarin Android中,我有一种方法可以找到设备上的所有包名称,如下所示:

[assembly: Xamarin.Forms.Dependency(typeof(Launcher.Droid.GetLauncher))]
namespace Launcher.Droid
{
class GetLauncher : MainActivity,IGetLauncher
{

public string GetPackageName(int index)
{
var apps = Android.App.Application.Context.PackageManager
.GetInstalledApplications(PackageInfoFlags.MatchAll);

return apps[index].PackageName; ;
}
}
}

我可以从Xamarin Forms访问这个函数来获取包名称。

现在我想推出一个应用程序与某个包名称:

我也在Xamarin Android中尝试了以下代码,通过Xamarin Forms的界面访问:

[assembly: Xamarin.Forms.Dependency(typeof(Launcher.Droid.GetLauncher))]
namespace Launcher.Droid
{
class GetLauncher : MainActivity,IGetLauncher
{
public void RunApp(int index)
{
var apps = Android.App.Application.Context
.PackageManager.GetInstalledApplications(PackageInfoFlags.MatchAll);
Intent intent = 
PackageManager.GetLaunchIntentForPackage(apps[index].PackageName);
StartActivity(intent);
}    
}
}

导致以下错误:

Java.Lang.NullPointerExceptionNachricht=尝试在空对象引用上调用虚拟方法"android.content.pm.PackageManager android.coontent.Context.getPackageManager((">

错误发生在PackageManager.GetLaunchIntentForPackage行上。我正在一个物理设备上进行测试。

如有任何帮助或提示,我们将不胜感激。

尝试更改您的代码,如下所示:

[assembly: Xamarin.Forms.Dependency(typeof(Launcher.Droid.GetLauncher))]
namespace Launcher.Droid
{
class GetLauncher :  IGetLauncher
{
public void RunApp(int index)
{
var apps = Android.App.Application.Context.PackageManager.GetInstalledApplications(PackageInfoFlags.MatchAll);
Intent intent = Android.App.Application.Context.PackageManager.GetLaunchIntentForPackage(apps[index].PackageName);
Android.App.Application.Context.StartActivity(intent);
}
}
}

最新更新