2017-12-21 15 views
1

Androidスタジオを使用しています。私はギャラリーにある写真を処理しようとしました。私はdata.getData()からUri戻っ保護void onActivityResult(int requestCode, int resultCode, Intent data)Android Photo GalleryがOnActivityResultのデータから正しいUriを返さない

startActivityForResult(photoPickerIntent, REQUEST_IMAGE_Load);

を呼び出す

が正しくありません。以下のような

内容://com.google.android.apps.photos.contentprovider/-1/1/content%3A%2F%2Fmedia%2Fexternal%2Fimages%2Fmedia%2F128/ORIGINAL/NONE/1980269994

イメージ名はありません。

どうすればいいですか?ありがとう。

+0

は、問題のあなたの 'Intent'を追加します。 – ADM

答えて

0

あなたは

requirdUri = Uri.fromFile(theSrcPath); 

あなたのデバイスを使用している場合は、あなたがこのコードを使用すべきNaugetの上にあるカメラやギャラリー

あなたが方法下記のユーザーにプロバイダを作成する必要がありますからURIを取得します。このため あなたは

RES内のフォルダを作成する必要があります - >のXml - >とFile_path_public.xmlという名前のファイルを追加します。 注:1つのプロバイダと同様にあなたは、任意のファイル名

を選択することができますし、そのファイル入れてコードの中

<?xml version="1.0" encoding="UTF-8"?> 

-<paths xmlns:android="http://schemas.android.com/apk/res/android"> 

<external-path path="." name="external_files"/> 

</paths> 

とアプリケーションのタグ内にマニフェストファイルで

登録:

<!-- this is For Access External file Storage --> 
<provider 
    android:name="android.support.v4.content.FileProvider" 
    android:authorities="com.example.appName.provider" 
    android:exported="false" 
    android:grantUriPermissions="true"> 
    <meta-data 
     android:name="android.support.FILE_PROVIDER_PATHS" 
     android:resource="@xml/file_paths_public" /> 
</provider> 

次にこの機能を作成します。

public static Uri getUriFromFile(Context theCtx, File theSrcPath) { 
     Uri requirdUri = null; 

     // Above Compile SDKversion: 25 -- Uri.fromFile Not working 
     // So we have to use Provider 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { 
      requirdUri = FileProvider.getUriForFile(theCtx, 
        theCtx.getApplicationContext().getPackageName() + CommonUtils.PROVIDER_FILE_EXTENSION, 
        theSrcPath); 
     } else { 
      requirdUri = Uri.fromFile(theSrcPath); 
     } 

     return requirdUri; 
    } 

マニフェストで外部ストレージのアクセス許可が必要であることに注意してください。

+0

お手伝いいただきありがとうございます。ファイル名を取得する方法を見つけましたが、そのパスはわかりません。したがって、fromFile()に渡す値についてはわかりません。 – psbookmark

+0

@psbookmarkあなたはこれを理解しましたか?私は同じ問題を抱えている。私はいくつかのサーバーにアップロードしたいファイルに対して正しいUriを取得できません。 – Vakas

0

あなたがイメージ名を欲しいなら、あなたは一例that.forから名前を取得し、ファイルを作成する必要があります。

File f = new File(uri.getPath()); 
String imageName = f.getName(); 
関連する問題