我想为Xamarin.forms项目设置通知。将DependencyService用于特定于平台的功能,使用这些功能的签名定义接口。
我的界面是:
namespace MyProject.Interfaces
{
public interface ILocalNotificationService
{
void ShowLocalNotification(string title, string text, string icon);
}
}
并且,接口实现是:
[assembly: Dependency(typeof(LocalNotificationService))]
namespace MyProject.Droid.Dependencies
{
public class LocalNotificationService :Activity, ILocalNotificationService
{
private static int notificationId = 1;
public void ShowLocalNotification(string title, string text, string icon)
{
try
{
Intent intent = new Intent(this, typeof(MainActivity));
......
}
catch(Exception ex)
{
}
}
}
}
但是,当我运行程序时,会发生异常:
尝试在空对象引用上调用虚方法'java.lang.String android.content.Context.getPackageName()'
此行发生异常:
Intent i = new Intent(this, typeof(AlarmReceiver));
如何处理此异常以及如何在这种情况下正确获取MainActivity?
在表单中获取应用程序的Context
核心class
一般我们使用此代码片段
var activity = Forms.Context as Activity;
然后我们可以通过上面的activity
,例如
var activity = Forms.Context as Activity;
Intent i = new Intent(activity, typeof(MainActivity));