Uses-Berechtigungen für ManifestKamera-Intent-Erlaubnis, Android, warum das nicht funktioniert?
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
und
CODE
mCameraButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (ActivityCompat.checkSelfPermission(getActivity(),
Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE}, 1000);
} else {
startCameraActivity();
}
}
});
public void startCameraActivity() {
Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (cameraIntent.resolveActivity(getActivity().getPackageManager()) != null) {
startActivityForResult(cameraIntent, 1000);
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK) {
if (requestCode == 1000) {
first_getUri = data.getData();
Bitmap bitmap = null;
try {
bitmap = getBitmapFromUri(first_getUri);
} catch (IOException e) {
}
File imageFile = null;
try {
imageFile = createFileFromBitmap(bitmap);
} catch (IOException e) {
}
returnUri = Uri.fromFile(imageFile);
}
Glide.with(this)
.load(returnUri)
.override(1280, 1280)
.into(mImageview);
}
}
Und das ist für andere Methoden (können Sie ignorieren)
private Bitmap getBitmapFromUri(Uri uri) throws IOException {
ParcelFileDescriptor parcelFileDescriptor =
getActivity().getContentResolver().openFileDescriptor(uri, "r");
FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inJustDecodeBounds = true;
BitmapFactory.decodeFileDescriptor(fileDescriptor, null, opts);
int width = opts.outWidth;
int height = opts.outHeight;
float sampleRatio = getSampleRatio(width, height);
opts.inJustDecodeBounds = false;
opts.inSampleSize = (int) sampleRatio;
Bitmap resizedBitmap = BitmapFactory.decodeFileDescriptor(fileDescriptor, null, opts);
Log.d("Resizing", "Resized Width/Height : " + resizedBitmap.getWidth() + "/" + resizedBitmap.getHeight());
parcelFileDescriptor.close();
return resizedBitmap;
}
private float getSampleRatio(int width, int height) {
final int targetWidth = 1280;
final int targetheight = 1280;
float ratio;
if (width > height) {
// Landscape
if (width > targetWidth) {
ratio = (float) width/(float) targetWidth;
} else ratio = 1f;
} else {
// Portrait
if (height > targetheight) {
ratio = (float) height/(float) targetheight;
} else ratio = 1f;
}
return Math.round(ratio);
}
private File createFileFromBitmap(Bitmap bitmap) throws IOException {
File newFile = new File(getActivity().getFilesDir(), makeImageFileName());
FileOutputStream fileOutputStream = new FileOutputStream(newFile);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fileOutputStream);
fileOutputStream.close();
return newFile;
}
private String makeImageFileName() {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd_hhmmss");
Date date = new Date();
String strDate = simpleDateFormat.format(date);
return strDate + ".png";
}
Die CODE gut funktioniert, wenn CODE für get Bild aus der Galerie ist wie diese
private void startGallery() {
Intent cameraIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
cameraIntent.setType("image/*");
if (cameraIntent.resolveActivity(getActivity().getPackageManager()) != null) {
startActivityForResult(cameraIntent, 2000);
}
}
Also, ich denke, dass Problem in Android-Berechtigung ist.
CODE funktioniert gut unter oder gleich android 5.xx
Aber funktioniert nicht auf über oder gleich android 6.xx
Frage: Gibt es eine Erlaubnis Code fehlgeschlagen ich verpasst?
Android Permission ist zu schwer zu verstehen Würden Sie mich wissen lassen, wie Sie diesen CODE ändern?
bearbeiten
keine Mittel arbeiten: wenn ich mCameraButton klicken, nichts passieren. Es ist nichts passiert.
Bitte erläutern, ** im Detail **, was "Sie funktioniert nicht" bedeutet. Außerdem gibt "ACTION_IMAGE_CAPTURE" keinen "Uri" zurück. – CommonsWare
Sie müssen 'Runtime Permission' für Android 6.0 und höher hinzufügen. –
@CommonsWare ich hinzugefügt. "Funktioniert nicht" bedeutet, dass nichts passiert ist. –