2012-01-10 205 views
1

我正在创建一个应用程序,我需要调用按钮单击时已经安装在设备中的另一个应用程序。从我的应用程序调用另一个应用程序

我已经对它做了一些研究,我知道我需要调用相同的意图。我不明白的是我没有我想要调用的应用程序的类名。例如,如果我想通过按钮单击我的应用程序来调用设备的图库,那么我该怎么做?

Uri uri = Uri.parse("file:///sdcard/"); 
Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_VIEW); 
intent.setData(uri); 
intent.setType("application/pdf"); 
startActivity(intent); 
return true; 

谢谢你们。我已经试过这段代码,但它说文档无法打开。

回答

0

如果精确的应用是次要的,你只需要的东西,会显示你的内容,你也可以完全省略组件名称。只需在意图上设置操作,数据和(可选)类型,并让操作系统完成这项工作。

Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_VIEW); 
intent.setData(/*your data uri*/); 
intent.setType(/*your data's MIME type*/); 
startActivity(intent); 

此意图将通过已注册与视图操作和适当的MIME类型意图一些应用程序进行处理。这是一个隐含的意图,就像阿迪尔提到的那样。

+0

我有一个名为printershare的应用程序,我需要从我的应用程序打开。你能提供给我这个uri来打开吗?我想我错过了正确的URI .. – Khush 2012-01-10 09:06:22

+0

如果它是一个你没有写的应用程序,你应该检查printershare文档。没办法真正猜测包或类名称。一般来说,您可能无法假定Printerhare也已安装。 – dokkaebi 2012-01-12 18:41:33

1

这里调用 享受编码....

Intent res = new Intent(); 
    String mPackage = "com.ReachOut"; 
    String mClass = ".splash1"; 
    res.setComponent(new ComponentName(mPackage,mPackage+mClass)); 
    startActivity(res); 
+0

“我不明白的是我没有我想要调用的应用程序的类名”是作者所说的。所以他/她不能真正喜欢用这个编码! – 2012-01-10 09:45:54

+0

好的,你知道哪个应用程序? – 2012-01-10 09:53:03

3

您需要调用Implicit Intents

从文档:没有指定组件

隐性意图;相反,它们必须包含足够的信息以供系统确定哪个可用组件最适合为该意图运行。

这些意图,可以触发提供任何行动类别信息

例如
要打开浏览器 Activity,你不知道 Activity类名你

会使用类似这样的东西:

Intent in = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com")); 
startActivity(in); 

又如:你不知道的Gallery Activity类,你将它用Implicit Intent这样的呼吁:

Intent intent = new Intent(); 
intent.setType("image/*"); 
intent.setAction(Intent.ACTION_GET_CONTENT); 
startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE); 
相关问题