java.lang.nullpoInterException:'尝试调用虚拟方法' void android.app.App.Acp.requestpermissions(java.lang.lang.string [],int)&#x27'
我试图在App的类上请求read_contacts权限,但引发了例外 例外 java.lang.nullpointerexception:“尝试调用虚拟方法” void android.app.activity.requestpermissions(java.lang.string [],int)'null对象引用
{
public App(SignalrMessenger signalrMessenger, ChatServicesSettings chatServicesSettings, ContactServices contactServices)
{
InitializeComponent();
if (!IsPermissioGranted(Android.App.Application.Context, Manifest.Permission.ReadContacts))
{
RequestPermission(Android.App.Application.Context as Activity, new[] { Manifest.Permission.ReadContacts }).GetAwaiter().GetResult();
}
MauiApplicationServices.WasDatabaseUpdatedOnStartUp = contactServices.SynchronizeDbWithLocalContacts().GetAwaiter().GetResult();
MainPage = new MainPage(signalrMessenger,chatServicesSettings);//new AppShell();
}
public bool IsPermissioGranted(Context ctx, string permission)
{
return ActivityCompat.CheckSelfPermission(ctx, permission)== Permission.Granted;
}
public async Task RequestPermission(Activity activity, params string[] permissions)
{
ActivityCompat.RequestPermissions(activity, permissions, 0);
await Task.CompletedTask;
}
}
'要在活动中获得许可并注入服务?由于MainActity应用程序初始化中调用了默认的CTOR
I have tried to request on App's class to request the READ_CONTACTS permissions but throws an exception
Exception
Java.Lang.NullPointerException: 'Attempt to invoke virtual method 'void android.app.Activity.requestPermissions(java.lang.String[], int)' on a null object reference'
{
public App(SignalrMessenger signalrMessenger, ChatServicesSettings chatServicesSettings, ContactServices contactServices)
{
InitializeComponent();
if (!IsPermissioGranted(Android.App.Application.Context, Manifest.Permission.ReadContacts))
{
RequestPermission(Android.App.Application.Context as Activity, new[] { Manifest.Permission.ReadContacts }).GetAwaiter().GetResult();
}
MauiApplicationServices.WasDatabaseUpdatedOnStartUp = contactServices.SynchronizeDbWithLocalContacts().GetAwaiter().GetResult();
MainPage = new MainPage(signalrMessenger,chatServicesSettings);//new AppShell();
}
public bool IsPermissioGranted(Context ctx, string permission)
{
return ActivityCompat.CheckSelfPermission(ctx, permission)== Permission.Granted;
}
public async Task RequestPermission(Activity activity, params string[] permissions)
{
ActivityCompat.RequestPermissions(activity, permissions, 0);
await Task.CompletedTask;
}
}
So I wonder if there is possibly a way to ask for permission in an Activity and inject a service OnCreate method? since the default ctor is called in the MainActity app initialization
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
on Create
方法将按预期触发MainActivity
类中的预期。您可以要求在
mainActivity
中索取权限,而不是app
类。示例代码
OnCreate
method will be triggered as expected inMainActivity
class.You can ask for the permission inside
MainActivity
instead ofApp
class.Sample code
您可以将Main Activity作为App Methord
步骤1中的参数传递为参数:初始化App Methord步骤2中的活动变量
:在App Methord
步骤3中创建构造函数:现在,用可缝合参数调用App Methord
{
public App(signalrmessenger signalrmessenger,chatservicessettings chatservicessetsings,ContactServices ContactServices)
{
InitializeComponent();
}
You can pass MainActivity as argument in App methord
step 1: Initialise a Activity variable in App methord
Step 2 : Create Constructor with in the App Methord
Step 3: Now call App Methord with sutable Parameter
{
public App(SignalrMessenger signalrMessenger, ChatServicesSettings chatServicesSettings, ContactServices contactServices)
{
InitializeComponent();
}