Wie extrahiere ich den Dateinamen aus URI, der von Intent.action_get_content zurückgegeben wurde?Android

Forum für diejenigen, die für Android programmieren
Guest
 Wie extrahiere ich den Dateinamen aus URI, der von Intent.action_get_content zurückgegeben wurde?

Post by Guest »

Ich verwende den Dateimanager von Drittanbietern, um eine Datei (PDF in meinem Fall) aus dem Dateisystem auszuwählen. < /p>

So starte ich die Aktivität: < /strong> < /p>

Code: Select all

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType(getString(R.string.app_pdf_mime_type));
intent.addCategory(Intent.CATEGORY_OPENABLE);

String chooserName = getString(R.string.Browse);
Intent chooser = Intent.createChooser(intent, chooserName);

startActivityForResult(chooser, ActivityRequests.BROWSE);
< /code>

 Das habe ich in Onaktivitätsarbeit < /code>: < /strong> < /p>

Uri uri = data.getData();
if (uri != null) {
if (uri.toString().startsWith("file:")) {
fileName = uri.getPath();
} else { // uri.startsWith("content:")

Cursor c = getContentResolver().query(uri, null, null, null, null);

if (c != null && c.moveToFirst()) {

int id = c.getColumnIndex(Images.Media.DATA);
if (id != -1) {
fileName = c.getString(id);
}
}
}
}
< /code>

Code -Snippet wird von  InVents Dateimanager < /em> hier verfügbar .org/en/node/829 

Der Zweck von if-eelse 
ist die Kompatibilität rückwärts. Ich frage mich, ob dies eine beste Möglichkeit ist, den Dateinamen zu erhalten, da ich festgestellt habe, dass andere Dateimanager alle möglichen Dinge zurückgeben. Togo < /em> etwas wie Folgendes zurückgeben:
< /p>

content://com.dataviz.dxtg.documentprovider/document/file%3A%2F%2F%2Fsdcard%2Fdropbox%2FTransfer%2Fconsent.pdf
< /code>

, auf dem getContentresolver (). query () < /code> null < /code>.

Um die Dinge interessanter zu machen, ungenannter Dateimanager (ich habe diesen URI aus dem Client -Protokoll erhalten) hat etwas wie: < /p>

zurückgegeben/./sdcard/downloads/.bin
< /code>

Gibt es eine bevorzugte Möglichkeit, den Dateinamen aus URI zu extrahieren oder sollte auf String -Parsen zurückgreifen? < /strong>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post