Java Android ActivityNotFoundException未能捕获操作系统4.1.2中的意图(适用于4.0.3)?
谢谢你看。我是一个非常老的程序员,但对Android/Java绝对是新手。虽然我还没有找到一种方法使代码变得丰富多彩和漂亮;) 我正在启动一个活动,以打开一个具有伪/假扩展名(mime类型)的文件,以便我可以强制此活动NotFoundException异常(测试) 不知何故,我的三星Galaxy S3(OS 4.1.2)从未出现过这种异常。AdobeReader打开并显示错误,该文件不是PDF(不是)。然而,在运行4.0.3的较旧ASUS Transformer平板电脑上,异常被正确捕获 有关守则如下:Java Android ActivityNotFoundException未能捕获操作系统4.1.2中的意图(适用于4.0.3)?,java,android,android-intent,exception-handling,android-4.2-jelly-bean,Java,Android,Android Intent,Exception Handling,Android 4.2 Jelly Bean,谢谢你看。我是一个非常老的程序员,但对Android/Java绝对是新手。虽然我还没有找到一种方法使代码变得丰富多彩和漂亮;) 我正在启动一个活动,以打开一个具有伪/假扩展名(mime类型)的文件,以便我可以强制此活动NotFoundException异常(测试) 不知何故,我的三星Galaxy S3(OS 4.1.2)从未出现过这种异常。AdobeReader打开并显示错误,该文件不是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();
}
这段代码是否有任何明显的错误,允许一个具有任何扩展名的文件不断地抛出到AdobeReader中?我已清除默认设置(设置->应用程序管理器->重置)。我所说的一切都是针对AdobeReader的
任何想法都很感激!谢谢大家!
Intent intent = new Intent();
需要成为:
Intent intent = new Intent(Intent.ACTION_VIEW);
您正在将数据和操作代码放入意图中,但是您从未告诉它意图是什么。下一行没有配置它吗?(intent.setAction(intent.ACTION_视图);)。我试过你的建议,它奏效了!我想知道为什么setAction()没有正确配置它。不管怎样,现在都很好用,谢谢!
setAction()
方法用于将操作代码传递到活动中。如果您有一个可以执行多个操作的自定义活动,您可以告诉它您需要它执行什么操作,那么就可以使用它。你需要使用ACTION\u VIEW
活动来创建一个新的意图。也许是因为语言太新,这似乎是“知情者”会理解的细微差别。如果您选择了重载构造函数的另一个版本,比如像您那样指定活动,而不是无参数构造函数,则重载构造函数的操作必须完全不同。setActivity()显然与在构造函数中设置它不同。据我所知,它肯定修复了它。非常感谢。