本章讲解下Android如何获取应用签名。
在某些场景下, 我们需要某应用的签名信息,签名信息存放在包里,所以我们需要获取包信息。
(1)获取已安装应用的所有包名
/**
* 获取所有已安装应用的包名
* @param paramContext
*/
private List<String> getInstalledPackageName(Context paramContext){
PackageManager localPackageManager = paramContext.getPackageManager();
List<PackageInfo> localPackageInfos = localPackageManager.getInstalledPackages(0);
List<String> list = new ArrayList<>();
for(PackageInfo packageInfo : localPackageInfos){
list.add(packageInfo.packageName);
}
return list;
}
(2)获取指定应用的签名
private Signature[] getRawSignature(Context paramContext, String paramString) {
if ((paramString == null) || (paramString.length() == 0)) {
errout("获取签名失败,包名为 null");
return null;
}
PackageManager localPackageManager = paramContext.getPackageManager();
PackageInfo localPackageInfo;
try {
localPackageInfo = localPackageManager.getPackageInfo(paramString, PackageManager.GET_SIGNATURES);
if (localPackageInfo == null) {
errout("信息为 null, 包名 = " + paramString);
return null;
}
} catch (PackageManager.NameNotFoundException localNameNotFoundException) {
errout("包名没有找到...");
return null;
}
return localPackageInfo.signatures;
}
(3)复制到粘贴板
String result = result_text.getText().toString().trim();
ClipboardManager cm = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
// 将文本内容放到系统剪贴板里。
cm.setText(result);