2013-11-24 4 views
0

У меня есть приложение, которое должно быть в состоянии открыть и прочитать текстовый файл с электронного письма. я изменил мой манифест к следующемуПолучить имя файла и путь от uri для текстового файла

<activity 
android:name="FileLoaderActivity" 
    android:label="@string/fileloader_title" 
    android:parentActivityName="MainActivity"> 
    <intent-filter> 
     <action android:name="android.intent.action.VIEW"/> 
     <category android:name="android.intent.category.DEFAULT"/> 
     <data android:mimeType="text/plain"/> 
    </intent-filter> 
</activity> 

В моей FileLoaderActivity я следующее внутри OnCreate метода:

// Get the intent that started this activity 
Intent intent = getIntent(); 
Uri data = intent.getData(); 

//Verify that the type is text file 
if (intent.getType().equals("text/plain")) { 
    String path = data.getPath(); 
    File file = new File(path); 
    Toast.makeText(getApplicationContext(), path,Toast.LENGTH_SHORT).show(); 
    if(file.exists()) 
     Toast.makeText(getApplicationContext(), "I exist",Toast.LENGTH_SHORT).show(); 
} 

Теперь выход заключается в следующем:

/my_email @ gmail.com/messages/78/attachments/0.1/BEST/false

и «Я существую» никогда не появляется. Таким образом, это не откроет файл, конечно, Я прочитал много других решений, но они, похоже, специфичны для СМИ. Можете ли вы помочь мне получить реальный путь к файлу,

Большое спасибо заранее

ответ

1

Ok, так что вы можете просто использовать

public String getRealPathFromURI(Uri contentUri) { 
    String[] proj = { MediaStore.Images.Media.DATA }; 
    @SuppressWarnings("deprecation") 
    Cursor cursor = managedQuery(contentUri, proj, null, null, null); 
    int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
    cursor.moveToFirst(); 
    return cursor.getString(column_index); 
} 

Это не только для изображений или медиафайлы. Конечно, дело в том, что вам нужно сначала загрузить файл, а затем зайти в папку для загрузки, чтобы открыть его. Кроме того, если вы пытаетесь загрузить файл, убедитесь, что вы отредактировали манифест иметь права доступа следующим образом:

<manifest> 
... 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
</manifest> 

Надеется, что это помогает кто ищет ответы

Смежные вопросы