You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin调试求助:无法完整查看CallLog权限报错信息

嗨,我之前也踩过Live Player这个错误提示的坑,它自带的提示不仅短还秒没,完全没法排查问题。给你几个实用的方法来获取完整的错误信息:

1. 查看Visual Studio的输出窗口

这是最直接的方式,Live Player运行时的所有日志都会输出到这里,不会被截断也不会自动消失:

  • 打开Visual Studio,点击顶部菜单的View -> Output(或者直接按快捷键Ctrl+W, O)
  • 在输出窗口顶部的下拉菜单里,选择Xamarin Diagnostics或者Debug选项,你就能找到完整的权限拒绝错误信息,包括被截断的com.开头的完整包名和权限详情。
2. 在代码里手动捕获并输出完整异常

把你访问CallLog的逻辑用try-catch包裹,强制输出完整的异常信息——这招对付各种截断提示都好用:

try
{
    // 这里放你获取通话日志的代码,比如:
    var callLogCursor = ContentResolver.Query(CallLog.Calls.ContentUri, null, null, null, null);
}
catch (Exception ex)
{
    // 输出到调试窗口,在Visual Studio的Output里就能看到
    System.Diagnostics.Debug.WriteLine("完整错误详情:\n" + ex.ToString());
    // 测试阶段也可以直接弹个对话框显示(正式环境建议去掉)
    await DisplayAlert("错误详情", ex.ToString(), "确定");
}

ex.ToString()会输出异常的完整堆栈信息,包括被截断的权限拒绝描述,不管Live Player的提示怎么消失,你都能稳稳拿到全部内容。

3. 顺便排查权限问题(毕竟你遇到的是权限拒绝错误)

既然错误开头是permission denial,大概率是权限没配置对:

  • 先在Android项目的AndroidManifest.xml里添加静态权限声明:
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.WRITE_CALL_LOG" />
  • 针对Android 6.0(API 23)及以上的设备,还需要动态申请权限,你可以在访问CallLog前先调用权限请求逻辑,避免权限不足的报错。

内容的提问来源于stack exchange,提问作者Anders

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:28:03