我正在创建一个ACTION_SEND
Intent
,它发送有关设备/应用程序当前状态的不同信息
我在将共享偏好文件URI附加到该意向时遇到问题
Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE);
intent.setData(Uri.parse("mailto:"));
intent.setType("application/*");
intent.putExtra(Intent.EXTRA_EMAIL , new String[] {"support@example.com"});
intent.putExtra(Intent.EXTRA_SUBJECT, "Email subject");
intent.putExtra(Intent.EXTRA_TEXT, "Email body - Debug info");
// THE IMPORTANT PART
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,fileUriList);
其中fileUriList
是包含的ArrayList<Uri>
- 我从
ContentProvider
成功获得的SQLite数据库文件 - 共享首选项文件URI-我无法获取该URI
提供商如何在清单中注册
<provider
android:name="._android._providers.MyFileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/>
</provider>
@xml/provider_paths:
<paths>
<cache-path name="cache_internal_storage" path="." />
<external-path name="external_files" path="."/>
</paths>
这就是我试图将URI获取到共享首选项文件的方式:
String spFilePath = getApplicationInfo().dataDir + "/shared_prefs/main_sp.xml";
File sharedPrefsMain = new File(spFilePath);
Uri spUri = MyFileProvider.getUriForFile(this, getApplicationContext().getPackageName() + ".provider", sharedPrefsMain);
我收到以下错误消息:
未能找到包含/data/data/ro.example/shared_refs/main_sp.xml
如何从内部专用内存中正确获取共享的preference.xml文件
对于Android 10,将其添加到您的privilder_paths.xml文件中:
<root-path name="root" path="." />
否则,请将您的文件复制到getFilesDir((,然后使用进行共享
<files-path name="private" path="."/>
FileProvider
不从任意位置提供服务,shared_prefs
超出了它所支持的范围。您需要创建自己的ContentProvider
来提供该文件。