2017-02-28 6 views
0

内部ストレージ、外部ストレージ、最近またはGoogleのシートからPDFファイルを選択できません。pdfを選択してサーバーにアップロード

Intent intent = new Intent("com.sec.android.app.myfiles.PICK_DATA"); 
intent.putExtra("CONTENT_TYPE", "application/pdf"); 
intent.addCategory(Intent.CATEGORY_DEFAULT); 
startActivityForResult(intent, FILE_SELECT_CODE); 

答えて

0

あなたは、各文書がコンテンツとして表されIntent.ACTION_OPEN_DOCUMENT

を使用することができます:// URIはopenFileDescriptor(Uri, String)でストリームとして開かれた、またはDocumentsContract.Documentメタデータを照会することができDocumentsProvider、に裏打ちされました。

すべての選択されたドキュメントは、持続可能な読み取りおよび書き込みパーミッション付与を持つ呼び出しアプリケーションに返されます。デバイスの再起動時にドキュメントへのアクセスを維持する場合は、takePersistableUriPermission(Uri, int)を使用して永続的なアクセス許可を明示的に取得する必要があります。

発信者は、受け入れ可能なドキュメントのMIMEタイプをsetType(String)で指定する必要があります。たとえば、写真を選択するには、image/*を使用します。複数の分離されたMIMEタイプが許容される場合は、EXTRA_MIME_TYPESsetType(String)を/に定義します。

詳細については、上記のAPIレベル19+でのみ使用可能です述べたこのlink

ノートを参照してください。

は、これを試してみてくださいまた、これを見て、 how to pick few type of file via intent in android?

+2

APIレベル。 –

0

をお持ちの

private static final int PICK_FILE = 101; 

    Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
    intent.setType("application/pdf"); 
    intent.addCategory(Intent.CATEGORY_OPENABLE); 

    try { 
     startActivityForResult(Intent.createChooser(intent, "Select a File"), PICK_FILE); 
    } catch (android.content.ActivityNotFoundException ex) { 
     // Potentially direct the user to the Market with a Dialog 
     Toast.makeText(this, "Please install a File Manager.", 
       Toast.LENGTH_SHORT).show(); 
    } 

onActivityResult:

@Override 
    public void onActivityResult(int reqCode, int resultCode, Intent data) { 
    super.onActivityResult(reqCode, resultCode, data); 

    switch (reqCode) { 

     case PICK_FILE: 
      if (resultCode == RESULT_OK) { 
       // Get the Uri of the selected file 
       Uri uri = data.getData(); 

       // Get the path 
       String path = getPath(mContext, uri); 
       Log.d(TAG, "Path: " + path); 
       if (path != null && path.contains(".pdf")) { 

       } 
      } 
      break; 
     } 
    } 

ある、getPath:私も16で実行する

public String getPath(Context context, Uri uri) { 
     if ("content".equalsIgnoreCase(uri.getScheme())) { 
      String[] projection = {"_data"}; 
      Cursor cursor; 

      try { 
       cursor = context.getContentResolver().query(uri, projection, null, null, null); 
       assert cursor != null; 
       int column_index = cursor.getColumnIndexOrThrow("_data"); 
       if (cursor.moveToFirst()) { 
        return cursor.getString(column_index); 
       } 
       cursor.close(); 
      } catch (Exception e) { 
       // Eat it 
      } 
     } else if ("file".equalsIgnoreCase(uri.getScheme())) { 
      return uri.getPath(); 
     } 
     return null; 
    } 
関連する問題