私がやりたいことは単純に思えますが、どこか詳細が欠けています.私の目標は、電子メールに添付されたテキストファイルを開くことができるアプリケーションを作成することです. ファイル拡張子が 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();
}
}
私が間違っていることは何ですか?