2017-02-28 4 views
0

Ich bin nicht in der Lage, PDF-Datei aus dem internen Speicher, externen Speicher, aktuelle oder Google-Blatt auszuwählen.Wählen Sie eine PDF-Datei und laden Sie sie auf den Server

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); 

Antwort

0

können Sie verwenden Intent.ACTION_OPEN_DOCUMENT,

Jedes Dokument wird als Inhalt dargestellt: // URI unterstützt durch eine DocumentsProvider, die als Stream mit openFileDescriptor(Uri, String) geöffnet werden kann, oder für DocumentsContract.Document Metadaten abgefragt.

Alle ausgewählten Dokumente werden an die aufrufende Anwendung zurückgegeben mit persistierbar Erlaubnis gewährt lesen und schreiben. Wenn Sie den Zugriff auf die Dokumente bei Neustarts von Geräten aufrechterhalten möchten, müssen Sie die persistenten Berechtigungen explizit mit takePersistableUriPermission(Uri, int) übernehmen.

Aufrufer müssen die zulässigen Dokument-MIME-Typen über setType (String) angeben. Um beispielsweise Fotos auszuwählen, verwenden Sie image/*. Wenn mehrere disjunkte MIME-Typen zulässig sind, definieren Sie sie unter EXTRA_MIME_TYPES und setType(String) für /.

Für weitere Einzelheiten entnehmen Sie bitte dieses link

Beachten Sie, dass oben nur auf API-Ebene verfügbar erwähnt ist 19+.

Werfen Sie einen Blick auf diese auch how to pick few type of file via intent in android?

+2

ich auf 16 auch ausgeführt werden soll API-Ebene. –

0

die Sie interessieren,

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:

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; 
    } 
Verwandte Themen