3

我想做的事情似乎很简单,但是我在某处遗漏了一些细节。我的目标是创建一个可以打开附加到电子邮件的文本文件的应用程序。我给自己发了一封电子邮件,其中附有一个文本文件,文件扩展名为 TRE。我创建了一个 android 应用程序,其意图在清单中指定,它将启动该应用程序。它做得很好。我在 OnCreate 函数中有代码来从意图中读取数据以获取文件名。这就是它变得奇怪的地方。当我打开电子邮件时,它会将附件保存到 temp-10.tre。但是,当应用程序打开时,它说文件名是 /4/4731/RAW。当然,当我尝试打开这个文件时,它说它无法打开它。我怀疑这个文件名不正确。

下面是清单代码:

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <activity
        android:name=".TREViewerActivity"
        android:label="@string/app_name" android:screenOrientation="landscape">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter> 
            <action android:name="android.intent.action.VIEW" /> 
            <category android:name="android.intent.category.DEFAULT" /> 
            <data android:mimeType="*/*" /> 
            <data android:pathPattern=".*\\.tre" />     
        </intent-filter> 

    </activity>
</application>

下面是我用来获取文件名的代码:

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);

    strFilename = "Not set";
    Intent intent = getIntent();
    if(intent != null)
    {
        Uri uri = intent.getData();
        if(uri != null)
        {
            strFilename = intent.getData().getPath();
            readFile();             
        }
    }

以下是我用来打开文件的内容:

private void readFile()
{
    try
    {
        FileInputStream inFile = new FileInputStream(strFilename);
        inFile.close();
        Toast.makeText(getApplicationContext(),"File opened ok",Toast.LENGTH_SHORT).show();         
    }
    catch(Exception e)
    {
        Toast.makeText(getApplicationContext(),e.toString() +   e.getMessage(),Toast.LENGTH_SHORT).show();          
    }

}

任何想法我做错了什么?

4

0 回答 0