我有一个应用程序,应该能够从电子邮件中打开和读取文本文件。 我将清单改为以下
<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
并且“我存在”永远不会出现。因此,这当然不会打开文件 我已经阅读了很多其他解决方案,但它们似乎是特定于媒体的。 你能帮我看一下文件的实际路径吗,
非常感谢您提前
答案 0 :(得分:1)
好的,你可以使用
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>
希望这可以帮助任何寻找答案的人