Android Arsenal – Datei-/Verzeichnisauswahl
- Es können eine oder mehrere Dateien ausgewählt werden.
- Verfolgt die Anzahl der ausgewählten Dateien genau wie Facebook.
- Ausgewählte Ordner werden ebenfalls angezeigt.
- Die Media Store API wird verwendet, um Bilder / Videodateien herunterzuladen. Daher sind Abwärtskompatibilität und nur Leseberechtigung erforderlich.
- Sowohl Bild-/Video-URIs als auch ImagePaths können heruntergeladen werden.
Klicken Sie auf das Bild, um die Demo anzuzeigen.
So integrieren Sie ein Git-Projekt in Ihren Build:
Schritt 1. Fügen Sie Ihrer Build-Datei ein JitPack-Repository hinzu
Fügen Sie es Ihrem root build.gradle am Ende des Repositorys hinzu:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
Schritt 2. Fügen Sie die Abhängigkeit hinzu
dependencies {
implementation 'com.github.hashimTahir:Facebook-Styled-Image-Picker:1.3'
}
Schritt 3. Verwenden Sie den Launcher, um die Bildauswahl von GalleryActivity wie folgt zu starten:
hGalleryActivityLauncher.launch(
Intent(
requireContext(),
GalleryActivity::class.java
).also {
it.putExtra(Constants.H_GET_VIDEOS, "")
}
)
Verwenden Sie „H_GET_VIDEOS“ und „H_GET_IMAGES“, um Videos und Bilder von Ihrem Gerät abzurufen.
Schritt 4. Holen Sie sich das Ergebnis vom Starter in der IntentHolder-Klasse wie folgt:
private val hGalleryActivityLauncher = registerForActivityResult(
ActivityResultContracts.StartActivityForResult()
) { result ->
if (result.resultCode == Activity.RESULT_OK) {
val hIntentHolder1 = result.data?.extras?.getParcelable<IntentHolder>(H_GET_VIDEOS)
val hIntentHolder2 = result.data?.extras?.getParcelable<IntentHolder>(H_GET_IMAGES)
val hBundle = Bundle()
if (hIntentHolder1 != null) {
hBundle.putParcelable(H_DATA_IC, hIntentHolder1)
}
if (hIntentHolder2 != null) {
hBundle.putParcelable(H_DATA_IC, hIntentHolder2)
}
findNavController().navigate(R.id.action_hHomeFragment_to_hDisplayFragment, hBundle)
}
}
wobei die Datenklasse IntentHolder eine Liste ausgewählter Bild-/Videodetails enthält.
@Parcelize
data class IntentHolder(
var hVideosList: List<Folder.VideoItem>? = null,
var hImageList: List<Folder.ImageItem>? = null
) : Parcelable
Die VideoItem-Datenklasse enthält diese Details für jedes Video.
@Parcelize
data class VideoItem(
var hFilePath: String? = null,
val hUri: String? = null,
var hFileName: String? = null,
var hFileSize: String? = null,
var hFileDuaration: String? = null,
var hModifiedDate: Long? = null,
var hFileSizeForOrder: String? = null,
var hFileDateTime: String? = null
) : Parcelable
Die Datenklasse ImageItem enthält diese Details für jedes Video.
@Parcelize
data class ImageItem(
val hItemName: String? = null,
val hSize: String? = null,
var hImagePath: String? = null,
var hImageUri: String? = null,
) : Parcelable