fork from https://github.com/zhihu/Matisse
- Order by edit time
- Separate the capture
- Fix crash when loading large image
- Adapt the Result Api
To get a Git project into your build:
Add it in your root build.gradle at the end of repositories:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.lwj1994:Matisse:${latestVersion}'
}
// pickerLauncher
private final ActivityResultLauncher<Intent> pickerLauncher = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
new ActivityResultCallback<ActivityResult>() {
@Override public void onActivityResult(ActivityResult result) {
if (result.resultCode != Activity.RESULT_OK) {
return@registerForActivityResult
}
Intent data = result.getData();
mAdapter.setData(Matisse.obtainResult(data), Matisse.obtainPathResult(data));
Log.e("OnActivityResult ", String.valueOf(Matisse.obtainOriginalState(data)));
}
});
Matisse.from(this)
.choose(MimeType.ofImage())
// ....
.forResult(pickerLauncher);
you can directly call capture
// captureLauncher
private final ActivityResultLauncher<Intent> captureLauncher = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
new ActivityResultCallback<ActivityResult>() {
@Override public void onActivityResult(ActivityResult result) {
if (result.resultCode != Activity.RESULT_OK) {
return@registerForActivityResult
}
Intent data = result.getData();
mAdapter.setData(Matisse.obtainResult(data), Matisse.obtainPathResult(data));
Log.e("OnActivityResult ", String.valueOf(Matisse.obtainOriginalState(data)));
}
});
Matisse.from(SampleActivity.this)
.performCapture(new CaptureStrategy(true, "com.zhihu.matisse.sample.fileprovider", "test"), captureLauncher);