我正在尝试在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);
}
}
}