2017-02-06 7 views
0

画像を切り抜くとアプリケーションがアンドロイド7.0でクラッシュする画像のクロップがアンドロイドで動作しない7.0

例外: 02-06 12:40:53.717 5671から5685/com.tribyte.iTutor2 E/DatabaseUtils:許可拒否:書き込みandroid.support.v4.content java.lang.SecurityExceptionを区分けするために、例外を書きます.FileProvider uri content://com.tribyte.iTutor2.provider/external_files/Android/data/com.tribyte.iTutor2/files/Application/sites/default/files/askexpertimages/[email protected]_1486365038955_crop.png from pid = 6784 、uid = 10105ではプロバイダをエクスポートする必要があります。また、android.content.ContentProvider.enforceWritePermission(contentProvider.java:497)のgrantUriPermission() とandroid.content.ContentProvider.enforceWritePermissionInner(ContentProvider.java:682) $ Transport.enforceWritePermission android.content.ContentProvider $ Transport.enforceFilePermission(ContentProvider.java:469) android.content.ContentProvider $ Transport.openAssetFile(ContentProvider.java:384) at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:262) )android.os.Binder.execTransact(Binder.java:565)

サンプルコードで :、私はそれはOOM.Theコードによって引き起こされています私の限られた経験で

private void performCrop() 
{ 
try 
{ 
Intent intent = new Intent("com.android.camera.action.CROP"); 
List<ResolveInfo> resInfoList = this.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); 
for (ResolveInfo resolveInfo : resInfoList) { 
String packageName = resolveInfo.activityInfo.packageName; 
this.grantUriPermission(packageName, temppicUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION); 
} 

String extension = android.webkit.MimeTypeMap.getFileExtensionFromUrl(picUri.toString()); 
String mimetype = android.webkit.MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); 

intent.setDataAndType(picUri,mimetype); 
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION); 
intent.putExtra("crop", "true"); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, temppicUri); 
intent.putExtra("outputX", 512); 
intent.putExtra("outputY", 512); 
intent.putExtra("aspectX", 0); 
intent.putExtra("aspectY", 0); 
//start the activity - we handle returning in onActivityResult 
if (intent.resolveActivity(getPackageManager()) != null) 
{ 
intent.putExtra("return-data", true); 
startActivityForResult(intent, PIC_CROP); 
} 
} 
catch(ActivityNotFoundException anfe) 
{ 
//display an error message 
String errorMessage = "Whoops - your device doesn't support the crop action!"; 
Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT); 
toast.show(); 
}  
} 
+0

マニフェストでWRITE_EXTERNAL_STORAGE権限を設定しましたか? –

+0

私はREAD/WRITE外部ストレージのアクセス許可を与えました。 – Rabbitrsr

答えて

-1

考えて、次のように、

です

intent.putExtra("outputX", 512); intent.putExtra("outputY", 512);

512 * 512のサイズは、高画質デバイスでは大きすぎて画面解像度が高くなりません。イメージが大きい場合は、イメージのサイズを小さくすることができます。

+0

私は200 * 200を追加しましたが、まだ動作しません。 – Rabbitrsr

関連する問題