我正在尝试将所有文件从source移动到destination文件夹。
使用SAF获取用户挑选的destinate URI:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent resultData) {
if (requestCode == INTENT_CODE && resultCode == Activity.RESULT_OK) {
if (resultData != null) {
destinationUri = resultData.getData();
destinationDocumentFile = DocumentFile.fromTreeUri(this, destinationUri);
getContentResolver().takePersistableUriPermission(destinationUri,
Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION );创建source DocumentFile实例(source文件夹放在内存,destination文件夹放在移动SD卡):
sourceFile =new File("sdcard/somewhere/music");
sourceDocumentFile =DocumentFile.fromFile(sourceFile);以及将文件从source移动到destinate
DocumentFile documentFiles[]= sourceDocumentFile.listFiles();
for (DocumentFile doc:documentFiles) {
DocumentsContract.moveDocument(getContentResolver(),
doc.getUri(),
doc.getParentFile().getUri(),
destinationUri);
}但我有个例外
java.lang.NullPointerException: Attempt to invoke virtual method 'android.os.Bundle android.content.ContentProviderClient.call(java.lang.String, java.lang.String, android.os.Bundle)' on a null object reference
at android.provider.DocumentsContract.moveDocument(DocumentsContract.java:1237)
at android.provider.DocumentsContract.moveDocument(DocumentsContract.java:1219)
at mo.drud.lmcc.MainActivity.move(MainActivity.java:96)Android 7.1.1,如果重要的话
发布于 2019-05-20 17:01:53
请检查调试中的上下文。上下文可能为空!
https://stackoverflow.com/questions/42852427
复制相似问题