Xamarin.Forms 依赖服务 ActivityNotFoundException: 未找到 Activity 处理 Intent
Xamarin.Forms Dependency Service ActivityNotFoundException: No Activity found to handle Intent
我正在使用 Xamarin.Forms 依赖服务在我的 PCL 中进行 phone 调用。
方法本身是:
public void Call(string number)
{
var uri = Android.Net.Uri.Parse(number);
var intent = new Intent(Intent.ActionView, uri);
Forms.Context.StartActivity(intent);
}
方法调用:
DependencyService.Get<IPhoneDialler>().Call("+447836726414");
使用它抛出
Android.Content.ActivityNotFoundException: No Activity found to handle Intent
同样的方法在其他服务上使用时完全正常(通过 Xamarin.Mobile 进行地理定位)
建议2:
调整您的调用方法以使用 Intent.ACTION_DIAL
public void Call(String number){
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:"+number));
Forms.Context.StartActivity(intent)
}
[1] http://developer.android.com/reference/android/content/Intent.html
建议1:
您是否在 class 之上(以及已定义的任何名称空间之外)获得了 [assembly] 属性
[assembly: Xamarin.Forms.Dependency (typeof (IPhoneDialler))]
我知道我正在复活一个死线程,但我花了将近 2 天的时间试图解决这个问题。
我几乎每次搜索都会出现这个话题,所以我认为把它放在这里是合理的。
不要忘记将 Intent 包装在选择器中。
例如:
Forms.Context.StartActivity(Intent.CreateChooser(email, "Send Email"));
我正在使用 Xamarin.Forms 依赖服务在我的 PCL 中进行 phone 调用。
方法本身是:
public void Call(string number)
{
var uri = Android.Net.Uri.Parse(number);
var intent = new Intent(Intent.ActionView, uri);
Forms.Context.StartActivity(intent);
}
方法调用:
DependencyService.Get<IPhoneDialler>().Call("+447836726414");
使用它抛出
Android.Content.ActivityNotFoundException: No Activity found to handle Intent
同样的方法在其他服务上使用时完全正常(通过 Xamarin.Mobile 进行地理定位)
建议2:
调整您的调用方法以使用 Intent.ACTION_DIAL
public void Call(String number){
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:"+number));
Forms.Context.StartActivity(intent)
}
[1] http://developer.android.com/reference/android/content/Intent.html
建议1:
您是否在 class 之上(以及已定义的任何名称空间之外)获得了 [assembly] 属性
[assembly: Xamarin.Forms.Dependency (typeof (IPhoneDialler))]
我知道我正在复活一个死线程,但我花了将近 2 天的时间试图解决这个问题。
我几乎每次搜索都会出现这个话题,所以我认为把它放在这里是合理的。
不要忘记将 Intent 包装在选择器中。
例如:
Forms.Context.StartActivity(Intent.CreateChooser(email, "Send Email"));