2016-06-15 35 views
2

コード: - 私は、Androidマニフェストファイルにこれに関連するすべての権限を使用しています結果コード0

Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);         
     try{ 
       imageUri = Uri.fromFile(File.createTempFile("image", ".jpg")); 
      }catch (Exception ex){ 
       ex.printStackTrace(); 
      } 

    intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, imageUri); 
    startActivityForResult(intent, REQUEST_CAMERA); 

... その意図を超えるMOT G3はターボと、より多くのデバイスで正常に動作しているが、ネクサス5だけの場合、resultCodeは0になります。なぜですか? CommonsWare卿の指導を

+2

'File.createTempFile(のための要件はありません)'世界的であるファイルのパスを返します書き込み可能。私は多くのデバイスでこのコードが失敗すると思います。 – CommonsWare

+0

だから、サー... plz plz plz ....そのための最適なコーディングをガイドしてください...私はあなたの巨大なファンです... @ CommonsWare –

+2

[このサンプルアプリケーション](https:// github.com/commonsguy/cw-omnibus/tree/master/Camera/Content)は、外部ストレージ上のファイルを使用します。しかし、それは技術として失敗し始めます。[Android Nは 'file:' 'Uri'の値を禁止し始めています(https://commonsware.com/blog/2016/03/14/psa-file- scheme-ban-n-developer-preview.html)。 [このサンプルアプリケーション](https://github.com/commonsguy/cw-omnibus/tree/master/Camera/FileProvider)は、最初のものと同じですが、 'FileProvider'を使用して、サードパーティのカメラアプリ私のアプリの内部ストレージに直接画像を保存する。 – CommonsWare

答えて

2

、私は次の変更をすることによって私の問題を解決する...

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
destination = Environment.getExternalStorageDirectory().getPath() + "/image.jpg"; 
outputUri= Uri.fromFile(new File(destination)); 
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputUri); 
if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.LOLLIPOP) { 
    intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); 
} else { 
    List<ResolveInfo> resInfoList = getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); 
    for (ResolveInfo resolveInfo : resInfoList) { 
     String packageName = resolveInfo.activityInfo.packageName; 
     grantUriPermission(packageName, outputUri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION); 
    } 
}   

startActivityForResult(intent, REQUEST_CAMERA); 
+1

@Hey Saurabhあなたのソリューションを使用していますが、Nexus(6.0.1)の場合でも結果コード0を取得していますが、Moto Power E3(バージョン6.0)で動作しています。 – Siddharth

関連する問題