2013-07-27 20 views
15

私は、アンドロイド上にdropboxのようなクラウドストレージを使用してファイルを共有するアプリを持っています。共有を開始するにはandroid.intent.action.SENDを投げます。 表示されているリストにGoogleドライブアプリ(以前にインストール済み)が表示されているので、ファイルを送信しようとしました。正常に動作し、ファイルがドライブリストに表示されます。GoogleドライブGET_CONTENTインテントの読み取りファイル

次に、別のデバイスでこのファイルを読んでいます。私は android.intent.action.GET_CONTENTのインテントを投げ、ドライブを選択して、ファイルへのアクセス方法を知らない。私はこのようなウリを受け取ります:

content://com.google.android.apps.docs.files/exposed_content/6jn9cnzdJbDywpza%2BlW3aA%3D%3D%0A%3BRV%2FaV94o%2FCcW4HGBYArtwOdHqt%2BrsYO4WmHcs6QWSVwp%2FXogkRAgit7prTnfp00a%0A 

私は物理的なファイルパスに変換する方法がわかりません。このファイルの内容をどのように入手できますか?

私はコンテンツプロバイダーの周りを回っていて、ファイル名は取得できますが、フルパスなどは取得できません。

私はfile://スタイルを取得します。まっすぐでシンプルなスタイルはうまくいきます。

答えて

5

それはあなたのような、たとえば、ContentResolverのでそれを使用することができ、コンテンツプロバイダのあなたのURIを送信している:

getContentResolver().query(Uri contentUri, String[] projection, String selection, String[] selectionArgs, String sortOrder); 

編集:実際のパス名を取得するための

Android: Getting a file URI from a content URI?

の下方に設けられたソリューションを使用します
+0

はい、ファイル名は取得できますが、パスは取得できません。 – khusrav

+0

http://stackoverflow.com/questions/5657411/android-getting-a-file-uri-from-a-content-uriには、質問の場合にこれを行う方法の例が示されています。 –

+0

興味深い、ありがとう、私を試してみましょう – khusrav

2

私も同じ問題に直面していました。 Googleドライブファイルからファイルパスを取得するためにフォローコードを使用しました。 SkyDriveとDropBoxで動作します。

String filePath = null; 
Uri _uri = data.getData(); 
Log.d("", "URI = " + _uri);          
if(_uri != null && "content".equals(_uri.getScheme())) { 
    Cursor cursor = this.getContentResolver().query(_uri, new String[] { android.provider.MediaStore.Files.FileColumns.DATA }, null, null, null); 
    cursor.moveToFirst(); 
    filePath = cursor.getString(0); 
    cursor.close(); 
} else { 
    filePath = _uri.getPath(); 
} 
Log.d("", "Chosen path = " + filePath); 

私はファイルを選択する意図を使用しています。ここでファイルを選択するコードです。

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
String strType = "*/*"; 
intent.setDataAndType(Uri.parse(dir.getAbsolutePath()), strType); 
startActivityForResult(intent, PICKFILE_RESULT_CODE); 

私のコードは、内部メモリまたは外部メモリからファイルを取得するときに問題なく動作します。同じコードでGoogleドライブからファイルを取得したいのですが

+1

Googleドライブからダウンロードする際に問題が見つかりましたか? –

+0

元のファイルパスを取得できません。 – Madhu

+0

Jahangeer Ahmedは何ですか?ファイルを選択するためのコードスニペットで – Radoslav