大家好,我有一个应用程序,其中我有一个带有共享图标的工具栏,当我点击共享图标时,它采用了一个小网址的截图,但问题是,现在我得到非法的参数异常,这工作正常。 这是例外
java.lang.IllegalArgumentException:无法找到包含/data/data/com.ct.app/cache/screenShot.png的已配置根目录
我对我的代码进行了调整,然后对SO进行了一些问题,但仍无法解决问题。 我将不胜感激任何帮助。 这是截图
的代码public void createScreenShot(View v)
{
try {
RelativeLayout rootview = (RelativeLayout) findViewById(R.id.photoScreen);
rootview.setDrawingCacheEnabled(true);
rootview.buildDrawingCache(true);
Bitmap bitmap = rootview.getDrawingCache(true).copy(Bitmap.Config.RGB_565, false);
rootview.setDrawingCacheEnabled(false);
File file = new File(this.getCacheDir(), "screenShot" + ".png");
Log.e("filelocation",file.toString());
FileOutputStream fOut = new FileOutputStream(file);
Log.e("fileoutput",fOut.toString());
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fOut);
fOut.flush();
fOut.close();
file.setReadable(true, false);
FileOutputStream out = null;
Intent share = new Intent(Intent.ACTION_SEND);
share.setType("text/plain");
share.putExtra(android.content.Intent.EXTRA_TEXT, "Download Android App");
share.putExtra(Intent.EXTRA_STREAM, FileProvider.getUriForFile(this,"com.ct.app.provider",file));
share.setType("image/*");
share.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
startActivityForResult(Intent.createChooser(share, "Share Image"),20);
}catch (Exception e)
{
e.printStackTrace();
}
}
这是清单提供者
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="@string/file_provider_authority"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_provide" />
</provider>
这是文件provide.xml
<?xml version="1.0" encoding="utf-8"?>
<paths>
<cache-path name="cache" path="/images/" />
<files-path name="files" path="/images/" />
<external-files-path name="external_files" path="."/>
<!--<external-cache-path name="external_files" path="." />-->
</paths>