2017-12-14 1 views
0

この質問は過去に尋ねられましたが、この質問を冗長としてマークする前に、私はこれを3時間にわたって把握しようとしていました。ちょうど混乱している。私の目標は写真を撮って、それをイメージビューにセットし、それをFirebase Storageにアップロードすることです。フルサイズの写真を取得するには、FileProviderがファイルへの参照を取り、それがフルサイズの写真がどこにあるのかという理由で、ローカルファイルに保存する必要があると思います。これまでのところ正しいのですか?私は私の人生のためにこれを達成するFileProviderを得ることができません。FileProviderがエラーを含む構成済みのルートを見つけられませんでした

// It all starts here 
public void onClick(View v) { 
    Log.d("DebugMySocks", "Change photo button clicked"); 
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
    // Ensure that there's a camera activity to handle the intent 
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) { 
     // Create the File where the photo should go 
     photoFile = null; 
     try { 
      photoFile = createImageFile(); 
     } catch (IOException ex) { 
      // Error occurred while creating the File 
     } 
     // Continue only if the File was successfully created 
     if (photoFile != null) { 
      Uri photoURI = FileProvider.getUriForFile(getApplicationContext(), 
        getPackageName(), 
        photoFile); 
      takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI); 
      startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); 
     } 
    } 
} 

private File createImageFile() throws IOException { 
    // Create an image file name 
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
    String imageFileName = "JPEG_" + timeStamp; 
    File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES); 
    File image = File.createTempFile(
      imageFileName, /* prefix */ 
      ".jpg",   /* suffix */ 
      storageDir  /* directory */ 
    ); 

    // Save a file: path for use with ACTION_VIEW intents 
    mCurrentPhotoPath = image.getAbsolutePath(); 
    return image; 
} 

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { 
     Bundle extras = data.getExtras(); 
     Bitmap imageBitmap = (Bitmap) extras.get("data"); 
     mProfileImage.setImageBitmap(imageBitmap); 
    } 
} 

// in manifest file 
<provider 
    android:name="android.support.v4.content.FileProvider" 
    android:authorities="${applicationId}" 
    android:exported="false" 
    android:grantUriPermissions="true"> 
    <meta-data 
     android:name="android.support.FILE_PROVIDER_PATHS" 
     android:resource="@xml/filepaths" /> 
</provider> 

// in /xml/filepaths.xml 
<?xml version="1.0" encoding="utf-8"?> 
<paths xmlns:android="http://schemas.android.com/apk/res/android"> 
    <external-path name="my_images" path="com.example.kevin.moresocksplease/files/Pictures" /> 
</paths> 

とエラーメッセージは次のとおりです:

java.lang.IllegalArgumentException: Failed to find configured root that contains /storage/emulated/0/Android/data/com.example.kevin.moresocksplease/files/Pictures/JPEG_20171214_111337.jpg706457555.jpg 

答えて

0

置き換えます

<external-path name="my_images" path="com.example.kevin.moresocksplease/files/Pictures" /> 

で:

<external-files-path name="my_images" /> 
多くの試みの後

が、これは私が持っているものです
+0

それはそのトリックをしたようです。私はそれが大きなものではないことが分かっていたが、それは私が予想していたよりも小さかった。 – user1766768

関連する問題