Also habe ich Code implementiert, um Bilder aus meinem Dateisystem mit der Standardbildauswahl in Android auszuwählen, aber aus irgendeinem Grund ist jedes Bild ausgegraut. Es erlaubt mir nicht, ein Bild zu wählen. Ich habe es auf Marshmallow 6.0.1 (von wo Screenshot gemacht wird) und auf Lollipop 5.1.1 getestet.Ich kann kein Bild aus der Systembildauswahl auswählen
Hier ist meine Implementierung:
Manifest:
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.company.app.permission.C2D_MESSAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Beachten Sie, dass all dies hat sich auf die gleiche Tätigkeit, LaunchActivity.java
Variablen wie verwendet getan worden:
private ImageView picturebutton;
private Bitmap imageBitmap;
final private int MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE=1;
private int PICK_IMAGE_REQUEST = 1;
Image als Taster handeln:
picturebutton = (ImageView) findViewById(R.id.chose_picture);
View.OnClickListener picturebuttonClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
checkStorageReadPermission(LaunchActivity.this);
}
};
picturebutton.setOnClickListener(picturebuttonClickListener);
Verfahren checkStorageReadPermission() die Speicherzugangsberechtigungsanfragen:
public void checkStorageReadPermission(final Context context){
if(ContextCompat.checkSelfPermission(LaunchActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE)!= PackageManager.PERMISSION_GRANTED){
if(ActivityCompat.shouldShowRequestPermissionRationale(LaunchActivity.this, Manifest.permission.READ_EXTERNAL_STORAGE)){
}
else {
ActivityCompat.requestPermissions(LaunchActivity.this,new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);
}
}
else{
Log.d("Permissions","Permission was already granted");
startActivity(openGallery());
}
}
Der Aufhebungscode für onRequestPermissionsResult():
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
startActivity(openGallery());
Log.d("Permissions","Can read storage");
} else {
//code for deny
Log.e("Permissions","Can't read storage");
}
break;
}
}
Die Absicht openGallery(), die das Bild Picker ruft:
public Intent openGallery() {
Intent og = new Intent();
og.setType("image*/");
og.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(og,"Pick a picture"),PICK_IMAGE_REQUEST);
return og;
}
Der Code onActivityResult() außer Kraft zu setzen, wenn die Absicht genannt wird:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(resultCode,requestCode,data);
if(requestCode==PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null){
Uri imageUri = data.getData();
try{
imageBitmap = MediaStore.Images.Media.getBitmap(getContentResolver(),imageUri);
x.uploadImage(imageBitmap,LaunchActivity.this);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
Es gibt kein Problem mit der Erlaubnis Wenn der Prozess angefordert wird, wird der Systemberechtigungsdialog für den externen Speicherzugriff angezeigt. Er wird gewährt und der Picker öffnet, aber ich kann kein Bild auswählen. Hilfe wird geschätzt!
og.setType ("image * /"); anstelle dessen put og.setType ("image/*"); entferne zurück og; –