谢谢你看看。我是一个非常老的程序员,但对Android / Java来说是绝对的新手。虽然我还没有找到一种方法可以使代码变得丰富多彩而又很漂亮;)。
我正在开始一个活动来打开一个伪造/假扩展(mime类型)的文件,所以我可以强制执行 ActivityNotFoundException 异常(测试)。
不知何故,这个异常从未发生在我的三星Galaxy S3( OS 4.1.2 )上。 Adobe Reader打开并且文件不是PDF(它不是)的错误。但是,在运行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();
}
此代码是否存在任何错误,允许具有任何扩展名的文件在Adobe Reader中不断被抛出?我已经清除了我的默认设置(设置 - >应用程序管理器 - >重置)。我开始的一切活动只是在Adobe Reader上投掷。
任何想法都赞赏!谢谢!
答案 0 :(得分:2)
Intent intent = new Intent();
需要成为:
Intent intent = new Intent(Intent.ACTION_VIEW);
您将数据和ActionCode放入intent中,但是您从未告诉过它是什么意图。