Ich versuche, ein Foto mit der Standardkamera-App aufzunehmen und es in einem Speicher zu speichern, der nur für meine App sichtbar ist.Kann ein mit Standardkamera-App aufgenommenes Foto nicht speichern
public void startCamera(View view)
{
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getPackageManager()) != null)
{
File imageFile = null;
try
{
imageFile = createImageFile();
}
catch (IOException ex)
{
ex.printStackTrace();
}
if(imageFile != null)
{
Uri imageUri = FileProvider.getUriForFile(this, "vasiljevic.filip.secretnotes", imageFile);
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(takePictureIntent, 1);
}
}
}
createImageFile Methode:
private File createImageFile() throws IOException
{
String timeStamp = new SimpleDateFormat("yyyyddMM_HHmmss").format(new Date());
EditText editText = (EditText) findViewById(R.id.txtNoteName);
String noteName = editText.getText().toString();
String imageFileName = noteName + "_" + timeStamp;
File storageDir = new File(getFilesDir(), "images");
if(!storageDir.exists())
{
storageDir.mkdir();
}
File image = File.createTempFile(imageFileName, ".jpg", storageDir);
return image;
}
Dies ist Teil des Manifests enthält FileProvider:
<provider
android:authorities="vasiljevic.filip.secretnotes"
android:name="android.support.v4.content.FileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
Und file_paths.xml:
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<files-path name="my_images" path="images/"/>
</paths>
Nachdem ich ein Foto Es zeigt das Chaos an Alter "Kamera hat aufgehört", wenn ich es auf dem Emulator laufen lasse oder "Galerie hat aufgehört", wenn ich es auf einem echten Gerät laufen lasse. Später, wenn ich versuche, mit ACTION_VIEW Absicht darauf zuzugreifen, heißt es "kann Bild nicht öffnen", wenn ich es auf einem realen Gerät versuche oder wenn ich es auf dem Emulator versuche, verhält es sich so, als ob es ein Bild geöffnet hätte, aber der Bildschirm ist ganz schwarz und kein echtes Bild wird angezeigt.
Mache ich es richtig? Soll dieser Code das Bild korrekt speichern? Es basiert hauptsächlich auf der Erstellung von Fotos einfach offiziellen Android Tutorial: Taking photos simply
Ich versuchte es vorher mit diesem Flag und es hat nicht funktioniert, ich unterstütze ältere Versionen als 5.0, also werde ich diese ClipData Workaround überprüfen und sehen, ob es funktioniert, danke – Seviel
ClipData funktioniert! – Seviel