3
感谢您的关注。我是一个非常老的程序员,但绝对是Android/Java的新手。虽然我还没有找到一种方法使代码在这里变得丰富多彩)。Android ActivityNotFoundException未能捕捉OS 4.1.2中的Intent(适用于4.0.3)?
我开始一个活动打开了假/假扩展(MIME类型)的文件,所以我可以强制使用ActivityNotFoundException异常(测试)。
不知何故,我的三星Galaxy S3( OS 4.1.2)从未发生过这种异常。 Adobe Reader打开并且文件不是PDF的错误(它不是)。然而,在运行4.0.3的较旧的华硕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();
}
这有什么错blatent这段代码,将允许任意扩展什么那么曾经在ADOBE READER不断地抛出一个文件?我清除了我的默认设置(设置 - >应用程序管理器 - >重置)。我的一切都是在Adobe Reader上投掷的。
任何想法赞赏!谢谢!
下一行没有配置? (intent.setAction(Intent.ACTION_VIEW))。我试过你的建议,它的工作!我想知道为什么setAction()没有正确配置它。无论哪种方式,它现在效果很好,谢谢! – omi
'setAction()'方法用于将动作代码传递给Activity。如果你有一个可以执行多个操作的自定义活动,就可以使用它,你可以告诉它你需要做什么。您需要使用“ACTION_VIEW”活动创建一个新的Intent。 –
也许只是在语言上过于新颖,“知道的人”会理解这似乎是一种细微差别。重载的构造函数必须简单地以不同的方式操作,如果你选择它的一个替代版本,比如像你那样指定活动,而不是无参数的构造函数。 setActivity()显然不同于在构造函数中设置它。尽我所能说的是,它确实修复了它。谢谢! – omi