在Android低于API 22的设备中,可以使用获取所有已安装应用程序的列表和其包名的方法来实现自动填充功能。具体步骤如下:
public static List getInstalledApps(Context context) {
List apps = new ArrayList<>();
PackageManager pm = context.getPackageManager();
List packages = pm.getInstalledPackages(0);
for(PackageInfo packageInfo : packages) {
// 判断是否是系统应用
if((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) {
continue;
}
apps.add(packageInfo.applicationInfo.packageName);
}
return apps;
}
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) {
// 使用官方提供的AutoFill框架
} else {
List installedApps = AutoFillHelper.getInstalledApps(context);
// 在这里根据用户选择的应用程序获取相应的数据
}
需要注意的是,此方法可能与某些用户使用的应用程序不兼容,因为这些应用程序可能会使用反射或其他方法来获取系统中的应用程序列表。但是,在大多数情况下,该方法可以成功地填充文本字段。
参考链接:https://medium.com/@AndreaCioccarelliKjartansson/android-has-a-built-in-autofill-framework-but-dont-forget-about-those-below-22-fd78e8256635