在我的程序中检查是否安装了OpenCV Manager
应用程序。我从这个答案中得到了想法,这是我的代码:
public static boolean isAppInstalled(Context cnt, String packName) {
PackageManager pm = cnt.getPackageManager();
try {
pm.getPackageInfo(packName, PackageManager.GET_ACTIVITIES);
}
catch (PackageManager.NameNotFoundException e) {
return false;
}
return true;
}
从
private boolean isOpenCVInstalled() {
return GlobalFunctions.isAppInstalled(this, "org.opencv.engine");
}
在我的手机和平板电脑上工作得很好。但是在Samsung Galaxy Xcover 3
手机上,它总是返回true
,所以在OpenCV相机预览的形式中,我在接受安装时得到package not found, install?
消息和file not found
。
银河手机怎么了?还是用我的代码?
这个链接让我伤心。这是否意味着没有解决方案?
这个方法适合我:
public boolean isAppInstalled(Context ctx,String packageName) {
PackageManager pm = ctx.getPackageManager();
List<ApplicationInfo> apps = pm
.getInstalledApplications(PackageManager.GET_META_DATA);
for (ApplicationInfo app : apps) {
if (app.packageName.equals(packageName)) {
return true;
}
}
return false;
}
我相信这个链接。
现在我的解决方案是不重要的。我改变了OpenCV初始化由initAsync
到initDebug
在Activity类的静态部分。我有OpenCV库项目链接到我的项目,所以它适用于我。