Получение недопустимого исключения аргумента при использовании CacheDir для Screenshot - PullRequest
0 голосов
/ 23 мая 2018

Привет всем, у меня есть приложение, в котором у меня есть панель инструментов со значком общего ресурса, и когда я щелкаю по значку общего ресурса, он делает снимок экрана с крошечным URL-адресом, но проблема в том, что теперь я получаю недопустимое исключение аргумента, которое работало нормально.Вот исключение

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>

, а вот файл предоставьте .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>
...