集成Intune SDK(含MSAL)的Android应用崩溃,报BrowserSelector空指针异常
解决Android Intune SDK(含MSAL)登录后崩溃问题
问题分析
崩溃栈指向BrowserSelector类的浏览器检测逻辑,核心原因是Android API 33(Android 13)收紧了应用包查询权限,Intune/MSAL SDK在尝试检测设备上的浏览器时,因缺少必要权限或适配不足触发异常,导致流程中断,无法收到ENROLLMENT_SUCCEEDED通知。
解决方案
1. 补充包查询权限到AndroidManifest.xml
API 33要求应用声明权限才能查询设备已安装应用,可选择以下两种方式:
- 全局查询权限(快速解决):
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" tools:ignore="QueryAllPackagesPermission" />
- 针对性intent权限(更合规):
<queries> <intent> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:scheme="https" /> </intent> </queries>
2. 在MSAL配置中指定允许的浏览器
修改msal_config.json,通过browser_safelist固定SDK可使用的浏览器,避免自动检测所有浏览器:
{ "client_id": "你的客户端ID", "authorization_user_agent": "DEFAULT", "redirect_uri": "msauth://你的包名/你的签名哈希", "browser_safelist": [ { "browser_package_name": "com.android.chrome", "browser_signature_hashes": ["7HIpactkIAq2Y49orFOQKurWcI="] }, { "browser_package_name": "com.microsoft.emmx", "browser_signature_hashes": ["对应浏览器的签名哈希"] } ] }
注:浏览器签名哈希可通过MSAL官方工具生成或查阅文档获取。
3. 确认SDK版本兼容性
确保Intune SDK与MSAL版本完全匹配,优先使用官方推荐的配套版本;若当前最新版仍存在API33适配问题,可临时回退到已验证稳定的版本。
4. 验证PIN流程后的触发逻辑
完成上述配置后重新测试,确认PIN设置后SDK不再触发浏览器检测异常,流程可正常推进并接收ENROLLMENT_SUCCEEDED广播。
内容的提问来源于stack exchange,提问作者Xeshan J
相关产品推荐
相关产品推荐

