Ich habe eine Menge Fragen zu diesem Problem gelesen. Manche ähneln denen, die ich erlebe; Ich habe die Antworten ohne Erfolg versucht. Der Code funktioniert auf einem HTC Android 4.2 und funktioniert nicht auf einem Nexus 7 Android 4.4. Ich habe das Speicherverzeichnis geändert, um auf Android 4.4 zu funktionieren, also ist das nicht das Problem.Camera Intent nicht zum Aufruf Aktivität
Die Kamera Absicht gibt nie, wenn ich
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
verwenden und nicht zurück, wenn ich
verwendentakePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoFile);
aber nicht die Datei speichern.
Hier ist der vollständige Code. Rufen Sie die Absicht
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(manager) != null)
{
try
{
final File photoFile = createImageFile();
if (photoFile != null)
{
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photoFile));
//takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoFile);
startActivityForResult(takePictureIntent, 1);
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
Der Dateiname
private File createImageFile() throws IOException
{
if (mStorageDirectory == null)
{
createInitialStorageDirectory();
setupFolders();
mScrollList.notifyDataSetInvalidated();
}
// Create an image file name
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String imageFileName = "slide_" + timeStamp;
File storageDir = new File(mStorageDirectory);
File image = File.createTempFile(imageFileName, ".jpg", storageDir);
// image.setWritable(true, false);
// Save a path for use with ACTION_VIEW intents
mCurrentPhotoPath = image.getAbsolutePath();
return image;
}
die Callback-Funktion
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == -1)
{
}
}
Das Root-Verzeichnis plus speichern Verzeichnis
static String mBasePath = "/slides/";
private String getRootDirectory()
{
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state))
{
if (Build.VERSION.SDK_INT >= 19)
return mView.getContext().getFilesDir() + mBasePath;
else
return Environment.getExternalStorageDirectory() + "/Android/data/com.hdms.manager" + mBasePath;
//return Environment.getExternalStorageDirectory() + mBasePath;
}
return mBasePath;
}
Irgendwelche Gedanken w würde geschätzt werden.
Dank dieser Code funktioniert :) – chathura