使用CacheDir for Screenshot时获取非法参数异常

时间:2018-05-23 05:53:07

标签: java android file-handling

大家好,我有一个应用程序,其中我有一个带有共享图标的工具栏,当我点击共享图标时,它采用了一个小网址的截图,但问题是,现在我得到非法的参数异常,这工作正常。 这是例外

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>

0 个答案:

没有答案