Androidバージョンカメラ適合問題集合(整理更新中)

2145 ワード

SecurityException関連
1、
java.lang.SecurityException: Permission Denial: reading android.support.v4.content.FileProvider uri content://com.wapchief.jpushim.fileProvider/external_files/temp.jpg from pid=14476, uid=10031 requires the provider be exported, or grantUriPermission()
APi24       :
com.wapchief.jpushim E/uri=====: file:///storage/emulated/0/temp.jpg
com.wapchief.jpushim E/uritempFile: file:////storage/emulated/0/small.jpg
APi24       :
com.wapchief.jpushim E/uriBC=====: content://com.wapchief.jpushim.fileProvider/external_files/temp.jpg
com.wapchief.jpushim E/uri=====: content://com.wapchief.jpushim.fileProvider/external_files/temp.jpg

プロバイダをエクスポートする必要があるという意味です

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            //      
            intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
            //  :  7.0     
            intent.setClipData(ClipData.newRawUri(MediaStore.EXTRA_OUTPUT, uri));
            uritempFile = uri;
        } else {
            uritempFile = Uri.parse("file://" + "/" + Environment.getExternalStorageDirectory().getPath() + "/" + "small.jpg");
        }

2、
java.lang.SecurityException: Permission Denial: opening provider com.wapchief.jpushim.fileProvider from ProcessRecord
権限などが開放されていないという意味です.
解決策は、AndroidManifestの下のApplicationラベルのandroid:exportedプロパティがオンになっているかどうかを確認し、コードのintent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);の一時的な撮影権限がオンになっているかどうかを確認することです.

            
        

その他参考:FileProvider Android 7.0システムカメラを呼び出して写真を撮ったり、アルバムにアクセスしたりする問題.
関連記事
  • Android呼び出しシステムカメラ、ライブラリ、画像を切り取り、圧縮アップロード(7.0対応)