Ich verweise diese link zum Anzeigen von Bildern aus einem bestimmten Pfad im internen Speicher. Aber es funktioniert nur mit ACTION_VIEW, aber wenn ich ACTION_PICK verwenden zeigt es nicht den gleichen Pfad stattdessen seine einfach zu öffnen Galerie. Gibt es eine Möglichkeit, ein einzelnes Bild aus diesem bestimmten Pfad nach dem Anzeigen auszuwählen?Wählen Sie Bilder aus bestimmten Ordner
public class NewActivity extends AppCompatActivity{
private static final String file_path = Environment.getExternalStorageDirectory().getAbsolutePath()+"/fun";
private File[] allFiles ;
private String imagepath ;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
File folder = new File(file_path);
allFiles = folder.listFiles();
findViewById(R.id.start).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new SingleMediaScanner(NewActivity.this, allFiles[0]);
}
});
}
public class SingleMediaScanner implements MediaScannerConnection.MediaScannerConnectionClient {
private MediaScannerConnection mMs;
private File mFile;
public SingleMediaScanner(Context context, File f) {
mFile = f;
mMs = new MediaScannerConnection(context, this);
mMs.connect();
}
public void onMediaScannerConnected() {
mMs.scanFile(mFile.getAbsolutePath(), null);
}
public void onScanCompleted(String path, Uri uri) {
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setData(uri);
startActivityForResult(intent, 100);
mMs.disconnect();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==100 && resultCode==RESULT_OK){
try{
Uri selectedImageUri = data.getData();
String[] projection = {MediaStore.Images.Media.DATA};
//Cursor cursor_gallery = activity.managedQuery(selectedImageUri, projection, null, null, null);
Cursor cursor_gallery = getContentResolver().query(selectedImageUri, projection, null, null, null);
int column_index = 0;
if (cursor_gallery != null) {
column_index = cursor_gallery.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor_gallery.moveToFirst();
imagepath = cursor_gallery.getString(column_index);
cursor_gallery.close();
}
System.out.println("sammy_imagepath "+imagepath);
}catch(Exception e){
e.printStackTrace();
}
}
}
}
Was meinen Sie mit "implementieren Sie Ihre eigenen Picker"? Wie geht das? – Sammy
Sie schreiben eine Aktivität, die alle Dateien in der Aktivität in einer Listen- oder Rasteransicht anzeigt, und Sie können eine auswählen. Eine grundlegende könnte in einer Stunde oder zwei getan werden. Ein gutaussehender Mann wird natürlich länger brauchen. –
Verstanden. Lass mich das versuchen. – Sammy