Kotlin出现“!=操作符无法应用于String与Int类型”报错如何解决
编译错误根因
- 括号位置书写错误,错误将权限判断的比较逻辑塞进了
ContextCompat.checkSelfPermission()的方法参数范围内 - 该方法的参数要求为:第一个传入上下文对象,第二个传入String类型的目标权限标识;错误写法里把
android.Manifest.permission.READ_EXTERNAL_STORAGE != PackageManager.PERMISSION_GRANTED整段内容当成了第二个参数- 其中
android.Manifest.permission.READ_EXTERNAL_STORAGE是String类型的权限常量,PackageManager.PERMISSION_GRANTED是Int类型的授权状态常量 - 既存在类型不匹配(给方法传了非String类型的参数),又因为直接用!=连接String和Int类型,直接触发“!=操作符无法应用于String类型与Int类型”的编译报错。
- 其中
修正方案
核心调整是将!=的比较逻辑移出方法参数范围,让方法正确接收两个合法入参,修正后可直接编译运行的代码如下:
activity?.let { val permissionCheckResult = ContextCompat.checkSelfPermission( it.applicationContext, android.Manifest.permission.READ_EXTERNAL_STORAGE ) // 类型比较逻辑放在if判断括号内 if (permissionCheckResult != PackageManager.PERMISSION_GRANTED) { requestPermissions( arrayOf(android.Manifest.permission.READ_EXTERNAL_STORAGE), 1 ) } }
内容的提问来源于stack exchange,提问作者enesfide
相关产品推荐
相关产品推荐

