3

ご覧いただきありがとうございます。私は非常に古いプログラマーですが、Android/Java の初心者です。ここでコードをカラフルできれいにする方法をまだ見つけていませんが;)。

偽の/偽の拡張子 (MIME タイプ) を持つファイルを開くアクティビティを開始しているので、このActivityNotFoundException例外を強制できます (テストする)。

どういうわけか、この例外は私の Samsung Galaxy S3 ( OS 4.1.2 ) では決して起こりません。Adobe Reader が開き、ファイルが PDF ではない ( it's not ) というエラーが表示されます。ただし、4.0.3 を実行している古い ASUS Transformer タブレットでは、例外が適切にキャッチされます。

問題のコードは次のようになります。

// this file exists (check omitted).. 
File docFile = new File("/path/to/file.bogusextension");

// intent
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);

// getting doc Uri
Uri fileUri = Uri.fromFile(docFile);

// getting doc mimeType
MimeTypeMap mime = MimeTypeMap.getSingleton();
String extension = MimeTypeMap.getFileExtensionFromUrl(fileUrl);
String mimeType = mime.getMimeTypeFromExtension(extension);

intent.setDataAndType(fileUri, mimeType);

// this is for an adobe native extension, just getting FREContext
// in the class below and mapping functions
DocLauncherExtensionContext extensionContext = (DocLauncherExtensionContext) context;
Activity activity = extensionContext.getActivity();

try
{
    activity.startActivity(intent);                 
}
catch (ActivityNotFoundException e) 
{
    Toast.makeText(context.getActivity(), "This never happens!", Toast.LENGTH_LONG).show();                 
}

このコードには、どんな拡張子のファイルでも常に Adob​​e Reader にスローされるような明らかな問題はありますか? デフォルトをクリアしました ([設定] -> [アプリケーション マネージャー] -> [リセット])。私が開始したすべてのアクティビティは、Adobe Reader に投げつけられるだけです。

どんな考えでも大歓迎です!ありがとうございました!

4

1 に答える 1

2
Intent intent = new Intent();

なる必要があります:

Intent intent = new Intent(Intent.ACTION_VIEW);

インテントにデータと ActionCode を入れていましたが、それが何のインテントであるかを伝えていませんでした。

于 2013-10-02T21:56:34.973 に答える