如何检查字符串是否是有效的 Android 包名称?
最佳答案
包属性的 AndroidManifest 文档中描述了一个有效的 Android 包名称:
The name should be unique. The name may contain uppercase or lowercase letters ('A' through 'Z'), numbers, and underscores ('_'). However, individual package name parts may only start with letters.
见:https://developer.android.com/guide/topics/manifest/manifest-element.html#package
以下正则表达式将匹配一个有效的 Android 包名称:
^([A-Za-z]{1}[A-Za-z\d_]*\.)+[A-Za-z][A-Za-z\d_]*$
示例用法:
String regex = "^([A-Za-z]{1}[A-Za-z\\d_]*\\.)+[A-Za-z][A-Za-z\\d_]*$";
List<PackageInfo> packages = context.getPackageManager().getInstalledPackages(0);
for (PackageInfo packageInfo : packages) {
if (packageInfo.packageName.matches(regex)) {
// valid package name, of course.
}
}
有关正则表达式的详细说明,请参阅:https://regex101.com/r/EAod0W/1
关于android - 正则表达式匹配Android包名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40772067/