我在xamarin
遇到了问题,我需要一些帮助,
从xamarin
教程,我希望通过DependencyService
发起电话。
以下是Android部分的服务实现:
public bool Dial(string number)
{
var context = Android.App.Application.Context;
if (context == null)
return false;
var intent = new Intent(Intent.ActionCall);
intent.SetData(Uri.Parse("tel:" + number));
try
{
var activity = (Activity)context;
ActivityCompat.RequestPermissions(activity,
new String[] { Android.Manifest.Permission.CallPhone }, 1);
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
if (IsIntentAvailable(context, intent))
{
try
{
context.StartActivity(intent);
}
catch (Exception e)
{
Console.WriteLine(e);
throw;
}
return true;
}
return false;
}
主要问题是:我有一个被撤销的权限
android.permission.CALL_PHONE
。我确切地说,我已经在manifest
中获得了许可。我已经读过我需要在运行时注册权限。这就是我正在尝试的
ActivityCompat.RequestPermissions(activity,
new String[] { Android.Manifest.Permission.CallPhone }, 1);
但是我需要使用当前的参数作为参数,我无法将当前的上下文转换为Activity
。
请帮我找出错误的地方。
谢谢
答案 0 :(得分:0)
试试这个
var activity = (YourActivityName)Forms.Context;
例如:
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null) {
startActivityForResult(takePictureIntent, 0);
}
答案 1 :(得分:0)
如果你在活动中。
您正在投射应用程序上下文。
var context = Android.App.Application.Context;
将其替换为下面的
var context = android.content.Context;
如果您在服务中工作,那么您可以向您致电服务的地方寻求许可。
答案 2 :(得分:0)
我刚刚找到了解决方案。
我必须带上
的上下文var context = Xamarin.Forms.Forms.Context;
而不是
var context = Android.App.Application.Context;
之后,演员表现得很好
谢谢大家