android mit media scanner für SD-Karte
Hallo zu allen
im Versuch, eine Sicherung auf eine SD-Karte und ich habe ein problem mit dem media-scanner Scannen Sie die neue Datei gespeichert, so dass es sofort verfügbar ist
sind die Fehler in den folgenden Zeilen
new String[] { file.toString() }, null, //error: file cannot be resolved
new MediaScannerConnection.OnScanCompletedListener() {
//error: MediaScannerConnection.OnScanCompletedListener cannot be resolved to a type
dies ist mein code:
public void saveToSDCard(Bitmap bitmap, String name) {
boolean mExternalStorageAvailable = false;
boolean mExternalStorageWriteable = false;
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
mExternalStorageAvailable = mExternalStorageWriteable = true;
Log.v(TAG, "SD Card is available for read and write "
+ mExternalStorageAvailable + mExternalStorageWriteable);
saveFile(bitmap, name);
} else if (Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
mExternalStorageAvailable = true;
mExternalStorageWriteable = false;
Log.v(TAG, "SD Card is available for read "
+ mExternalStorageAvailable);
} else {
mExternalStorageAvailable = mExternalStorageWriteable = false;
Log.v(TAG, "Please insert a SD Card to save your Ad "
+ mExternalStorageAvailable + mExternalStorageWriteable);
}
}
private void saveFile(Bitmap bitmap, String name) {
String filename = name;
ContentValues values = new ContentValues();
File sdImageMainDirectory = new File(Environment
.getExternalStorageDirectory(), getResources().getString(
R.string.directory));
sdImageMainDirectory.mkdirs();
File outputFile = new File(sdImageMainDirectory, filename);
values.put(MediaStore.MediaColumns.DATA, outputFile.toString());
values.put(MediaStore.MediaColumns.TITLE, filename);
values.put(MediaStore.MediaColumns.DATE_ADDED, System
.currentTimeMillis());
values.put(MediaStore.MediaColumns.MIME_TYPE, "image/png");
Uri uri = this.getContentResolver().insert(
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
values);
try {
OutputStream outStream = this.getContentResolver()
.openOutputStream(uri);
bitmap.compress(Bitmap.CompressFormat.PNG, 95, outStream);
outStream.flush();
outStream.close();
//this is where im having the problem
//Tell the media scanner about the new file so that it is
//immediately available to the user.
MediaScannerConnection.scanFile(this,
new String[] { file.toString() }, null,
new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
Log.v("ExternalStorage", "Scanned " + path + ":");
Log.v("ExternalStorage", "-> uri=" + uri);
}
});
} catch (IOException e) {
//Unable to create file, likely because external storage is
//not currently mounted.
Log.v("ExternalStorage", "Error writing " + file, e);
}
}
- "Datei" ist nicht deklariert. Und haben Sie vergessen, import-android.media.MediaScannerConnection?
- ich importierte die mediaScannerConnection und noch sein gibt mir das gleiche problem....??!! und das einzige Update, das es zeigt, ist "Fix project setup.."
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich diese arbeiten gut mit der statischen Methode scanFile
Und hier ist mein code:
Hoffe, das hilft...
Oder können über intents:
Finden Sie unter: Dateien, Media-Scanner mit Absicht
MediaScannerConnection.OnScanCompletedListener ist erst ab API-level 8. Das gleiche gilt für die scanFile () - Variante, die Sie versuchen, zu verwenden. Überprüfen Sie Ihre minSdkVersion (und targetSdkVersion) in der manifest.
Wenn Sie Ihre app kompatibel mit Android-Versionen vor Froyo, dann sollten Sie das scanFile(String path, String mimeType) Variante. Es ist nicht statisch, Sie müssen also zu instanziieren und cache der Verbindung, z.B. in onResume():
Dann, wenn eine Datei gespeichert wird:
Vergessen Sie nicht, rufen scanner.disconnect() in onPause().
Verwenden Sie
File file;
im code, aber Sie haben nicht das Objekt Stattdessen verwenden SieFile outputFile
im anderen Teil des Codes. So müssen SieoutputFile.getAbsolutePath()
in IhremMediaScannerConnection.scanFile(...)
.