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

Android集成OneDrive遇MsalClientException:BrowserTabActivity意图过滤器缺失

解决Android MSAL集成OneDrive时的BrowserTabActivity Intent Filter缺失问题

排查与修复方案

1. 严格核对Manifest中BrowserTabActivity的配置

确保Activity的Intent Filter完全符合MSAL要求,尤其是data节点的参数:

<activity
    android:name="com.microsoft.identity.client.BrowserTabActivity">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <!-- scheme固定为msauth,host是应用包名,path是URL编码后的签名哈希 -->
        <data
            android:scheme="msauth"
            android:host="你的应用包名"
            android:path="/{URL编码后的签名哈希}" />
    </intent-filter>
</activity>

重点检查:

  • 签名哈希的URL编码是否完整:仅把末尾的=替换为%3D即可,但要确保哈希本身没有复制错误
  • 应用包名必须和Azure Portal中配置的完全一致,大小写也不能错

2. 重新生成并验证签名哈希

避免密钥库哈希获取错误,用命令重新生成一次:

keytool -exportcert -alias 你的密钥别名 -keystore 密钥库路径 | openssl sha1 -binary | openssl base64

生成后直接复制完整哈希,再将末尾的=替换为%3D,确保没有多余空格或字符遗漏

3. 检查MSAL配置JSON的一致性

打开res/raw下的配置JSON文件,确认:

  • redirect_uri格式为msauth://{包名}/{URL编码后的签名哈希},必须和Manifest中data节点的scheme+host+path完全匹配
  • account_mode的值是英文双引号包裹的"SINGLE",不要用中文引号

4. 清理缓存并重新构建项目

旧缓存可能导致配置不生效:

  • 执行Build > Clean Project
  • 再执行Build > Rebuild Project
  • 卸载设备上的旧应用,重新安装测试

5. 排查重复的Activity配置

检查Manifest中是否存在多个com.microsoft.identity.client.BrowserTabActivity的配置,或者第三方库是否自带了该Activity,重复配置会导致匹配冲突,确保只保留自己添加的那一份

6. 用adb命令验证Intent匹配

通过adb命令测试Intent能否正确触发BrowserTabActivity:

adb shell am start -a android.intent.action.VIEW -d "msauth://你的包名/你的URL编码哈希"

如果能正常打开应用的该Activity,说明配置正确;如果提示找不到Activity,重新核对哈希、包名和路径配置


内容的提问来源于stack exchange,提问作者GGK stands for Ukraine

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 10:09:53