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