2015-07-20 4 views
0

В моей программе есть проверка, установлено ли приложение OpenCV Manager. Я получил идею от this answer, вот мой код:Android установленное приложение не удалось

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 на прием установки.

Что не так с телефоном галактики? Или с моим кодом?

UPDATE

This link мне грустно. Означает ли это, что решения нет?

ответ

0

Ну, я считаю, this link.

Теперь с моим решением это не важно. Я изменил инициализацию OpenCV на initAsync до initDebug в статическом разделе класса Activity. У меня есть проекты библиотеки OpenCV, связанные с моим проектом, поэтому он работает для меня.

0

Этот метод работает для меня:

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; 
     } 
+0

Это противоположная ситуация - это всегда «ложь». – Ircover

Смежные вопросы