如何解决如何向 Android DocumentProvider 添加应用特定权限
我想在 AppA 中创建一个文件,然后只能从 AppB 访问它。我可以通过 DocumentProvider 创建文件,然后通过 StorageClient 访问它,参见示例 here。如何设置 AppA 中文件的权限,以便只有 AppB 可以访问它?
String s = "kv;ab\nkv1;cd";
try {
byte[] buffer = s.getBytes();
String filename = "myfile.txt";
System.out.println("filename="+filename);
FileOutputStream fos = getContext().openFileOutput(filename,Context.MODE_PRIVATE);
fos.write(buffer);
fos.close();
System.out.println(s);
} catch (IOException e) {
e.printstacktrace();
}
}
public void onClick(View view) {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("text/plain");
Uri pickerInitialUri= Uri.parse("content://com.example.android.storageprovider.documents/document/root%3Amyfile.txt");
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI,pickerInitialUri);
startActivityForResult(intent,READ_REQUEST_CODE);
}
@Override
public void onActivityResult(int requestCode,int resultCode,Intent resultData) {
super.onActivityResult(requestCode,resultCode,resultData);
readFileExternalStorage();
}
public String readFileExternalStorage() {
String s = "";
Uri uri1 = Uri.parse("content://com.example.android.storageprovider.documents/document/root%3Amyfile.txt");
try {
InputStream ins = this.getBaseContext().getContentResolver().openInputStream(uri1);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
int size;
byte[] buffer = new byte[1024];
while ((size = ins.read(buffer,1024)) >= 0) {
outputStream.write(buffer,size);
}
ins.close();
buffer = outputStream.toByteArray();
s = new String(buffer);
System.out.println("output=" + s);
} catch (FileNotFoundException e) {
System.out.println("An error occurred.");
e.printstacktrace();
} catch (IOException e) {
System.out.println("An error occurred.");
e.printstacktrace();
}
TextView textview = findViewById(R.id.textView);
textview.setText(s);
return "ok\n" + s;
}
解决方法
两个可能的选择-
-
https://developer.android.com/guide/topics/permissions/defining
-
使用共享加密密钥和基于用户的 salt 来加密和解密 Android 上存储的文件
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。