Android中被限制的String.indexOf([CII[CIII)I参数含义及API说明
非SDK接口
Ljava/lang/String;->indexOf([CII[CIII)I详解 接口完整含义
这个签名是JNI(Java Native Interface)格式的方法标识,对应java.lang.String类中一个未公开的indexOf重载方法,从Android API 28开始被列为受限非SDK接口,第三方应用调用会触发系统限制。
参数与返回值拆解
JNI签名的符号对应Java类型,逐一解析:
Ljava/lang/String;:表明方法归属java.lang.String类->:分隔类名和方法签名indexOf:方法名- 参数列表
[CII[CIII:[C:对应Java的char[],是要搜索的目标字符数组I:对应Java的int,搜索的起始索引位置I:对应Java的int,目标数组中参与搜索的长度[C:对应Java的char[],用于匹配的字符数组(即要找的内容)I:对应Java的int,匹配数组的起始索引I:对应Java的int,匹配数组中参与匹配的长度I:对应Java的int,控制搜索行为的标志位(系统内部使用)
)I:方法返回值为int,找到匹配时返回起始索引,未找到则返回-1
限制背景与替代方案
从Android 12(API 31)开始,这类非SDK接口的限制进一步加强,系统会拦截非法调用并抛出异常。这个方法原本是Android系统内部使用的非公开API,并不属于对外暴露的String类公开方法集合。
如果你在项目中用到了这个方法,建议替换为官方公开的indexOf重载,比如:
indexOf(String str)indexOf(String str, int fromIndex)indexOf(int ch, int fromIndex)
这些公开方法在所有API版本中都能安全使用。
内容的提问来源于stack exchange,提问作者Shreyas R
相关产品推荐
相关产品推荐

