2016-04-05 12 views
2

Ich entwickle eine Android App für Jellybean, KitKat und Lollipop und verschiedene andere Geräte.JellyBean verhält sich anders mit Bilderfassung

Zu Beginn des Projekts verwendete ich die Jellybean API-Bibliothek mit der Ziel-API 'anroid-18' unter Verwendung der 'Samsung Galaxy Note 2014 Edition'. Ein paar Monate später begann das Betriebssystem des Geräts, auf KitKat OS zu aktualisieren, also habe ich die Bibliothek in 'android-19' geändert, in der die Versionsnummer 4.4.2 ist.

Ich habe jetzt ein neues Gerät namens Galaxy S Tab 2.

Ich habe jetzt die drei Versionen und zwei Geräte und meine Standard-API ist 4.4.2.

Das Problem trat auf, wenn Bilder mit der App erfassen:

if (Build.VERSION.SDK_INT >= AlopexBuild.VERSION_SUPPORT.KITKAT) { 
     Intent mediaScanIntent 
      = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); 
     Uri contentUri = Uri.parse("file://"+ path); 
     mediaScanIntent.setData(contentUri); 
     sendBroadcast(mediaScanIntent); 
} else { 
     sendBroadcast(
     new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ path))); 
} 

Der folgende Code hat kein Problem in Jellybean:

Intent mediaScanIntent 
      = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); 
Uri contentUri = Uri.parse("file://"+ path); 
mediaScanIntent.setData(contentUri); 
sendBroadcast(mediaScanIntent); 

Warum ist das passiert?

Jellybean OS + Kitkat API = Fehler

Kitkat OS + Kitkat API = OK

Lollipop OS + KitKat API = OK

Problematische Code ist sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ path)));

Antwort

1

Nach dem Wiki Artikel Referenzen für jedes Betriebssystem bei der Freigabe der neuen KitKat und Lolipop OS und Umzug von Jellybean sie in eine neue Art von Laufzeitumgebung geändert. Da der Code nur in dieser neuen Umgebung kompatibel ist, müssen Sie eine andere Methode für andere Umgebungen wie Jellybean ausprobieren. Siehe here und here