1

Je travaille avec un code existant et l'appareil est ouvert à l'aideObtenir application qui ouvre implicite intention

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 

Ce qui est bien. Cependant, du code est en cours d'exécution lorsque l'application de la caméra est ouverte (je ne sais pas exactement pourquoi), mais cela fait quelque chose si l'application de la caméra est en face de l'utilisateur. L'application « top » est récupéré, puis le code qui vérifie si l'appareil est sur le dessus est:

boolean isCameraOnTop = topName.toLowerCase().indexOf("camera") != -1; 

Cela fonctionnait très bien depuis un certain temps mais nous avons testé avec un nouveau dispositif dont l'application de la caméra par défaut le nom n'est pas "appareil photo", mais quelque chose d'autre ("org.codeaurora.snapcam" si vous devez savoir). Cette approche semble fragile car tout appareil peut avoir une application de caméra par défaut. Alors, ma question est, quand je lance l'application appareil photo via l'intention ACTION_IMAGE_CAPTURE, comment puis-je trouver l'application qui est réellement ouverte?

+1

Les détails (http://stackoverflow.com/questions/4675405/android-intent-defaults-detect-and-clear [ce poste]) peut être utile sur l'utilisation de 'PackageManager'. –

Répondre

1

Après quelques recherches, j'ai trouvé la solution:

activity.getPackageManager().resolveActivity(cameraIntent, PackageManager.MATCH_DEFAULT_ONLY).activityInfo.packageName;