在Android中启动特定应用程序

3

我知道如何在Android中加载PDF文件。但是,如果安装了多个PDF查看器,Android会显示一个选择列表。我想使用特定的PDF查看器(比如DroidReader)来加载我的PDF文件。怎么做呢?

2个回答

2
我强烈建议不要像被接受的答案所建议的那样指定Intent中的显式类名,因为这是应用程序的实现细节,随时可能发生变化。
相反,按照正常流程构建您的Intent,但使用Intent.setPackage()来指定系统仅在所需应用程序的包名称中查找匹配的活动。示例如下:
Intent intent = new Intent(Intent.ACTION_VIEW, uriToView);
intent.setPackage("com.package.name.of.droidreader");
startActivity(intent)

但这也会将我绑定到特定的软件包。 - Mudassir
是的,但包名在版本之间不会改变,但Activity名称(即实现细节)可能会改变。 - Christopher Orr

1

然后指定活动的完整名称:

    Intent intent = new Intent();
    ComponentName comp = new ComponentName("com.package.name.of.droidreader", "com.package.name.of.droidreader.DroidReader");
    intent.setComponent(comp);
    startActivity(intent);

要知道包名和活动名称,您可以查看adb logcat输出:当您打开一个活动时,它会被记录在那里。当然,正确配置意图,以便DroidReader知道要打开哪个文件。

最后但很重要的是,您应该将startActivity方法用try-catch块括起来,捕获ActivityNotFoundException(我相信大多数手机都没有这个特定的应用程序)。


谢谢您的快速回复,Cristian。让我来看看。 - Mudassir
@Cristian:请告诉我如何在DroidReader中显示适合窗口的页面?我需要传递额外的参数吗?我已经发布了这个问题,但还没有回复。http://stackoverflow.com/questions/4720443/passing-extras-to-droidreader - Greenhorn
如果你直接向DroidReader的作者提问,你会得到更好的运气。也许他们甚至没有放置类似的东西,你正在浪费时间。 - Cristian
嘿,Cristian,你知道还有哪些支持此功能的PDF阅读器吗? - Greenhorn
1
请注意,这不是一个好建议,因为它将会使你的代码依赖目标应用程序的实现细节,而这些细节可能随时会发生变化并破坏你的代码。 - hackbod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接