2

我需要允许用户绘制/素描/绘画一些东西。已经有很多应用程序(比如 Skitch,我将以此为例)完成这项任务。所以我不想重新发明轮子。
在Android中,理论上,我们可以通过intent来启动其他activity。这有点像 Unix 中的“管道”。
问题是,我不知道如何获取启动 Skitch 的信息。
要将 Skitch 集成到我的应用程序中,我需要知道它支持的动作、完成时返回的意图(如果有的话)。

我在我的设备中安装了 Skitch、photoshop和许多其他触控绘图应用程序,但这段代码不起作用:

Uri data = Uri.fromFile(file);
Intent i = new Intent(Intent.ACTION_EDIT);
i.setData(data);
i.setType("image/*");                               
startActivityForResult(i, ACTIVITY_DRAW);

我可以通过以下方式从我的应用程序启动 Skitch:但显然我无法通过这种方式获得任何返回结果(代码来自这里)。

Intent i = new Intent(Intent.ACTION_MAIN);
PackageManager manager = getPackageManager();
i = manager.getLaunchIntentForPackage("com.evernote.skitch");
i.addCategory(Intent.CATEGORY_LAUNCHER);
startActivity(i);

我的问题:是否有标准方法来查找启动第三方应用程序的信息?这个网站
是共享/获取此类信息的唯一途径吗? 或者,如果您对我的问题有任何建议,请帮助我。 谢谢!

4

2 回答 2

3

您可能已经知道如何从您的应用程序中调用另一个应用程序 Activity ..这里提到了这种方式。

Intent intent = new Intent(Intent.ACTION_RUN); 
intent.setComponent(new ComponentName("<packet name>", "<class name>")); 
List list = packageManager.queryIntentActivities(intent, packageManager.COMPONENT_ENABLED_STATE_DEFAULT); 

if(list.size() > 0) 
{ 
 Log.i("Log", "Have application" + list.size()); 
 startActivity(intent); 
} 
else 
{ 
    Log.i("Log", "None application"); 
} 

您的所有要求主要是调用任何活动的两件事

1) 该活动的包名称 2) 活动类名称

这两个信息只有在开源或免费使用的情况下才可用..如 Zxing、Google Maps Application。

还有另一种启动应用程序活动的方法,例如,

Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" + numberField.getText())); // set the Uri
startActivity(intent);

要使用这种方式,需要知道要调用的 Activity 的正确 Action 以及要传递的正确参数。

再说一次,这些信息只有在开源或免费使用的情况下才可用......比如 Facebook 和 Gmail 应用程序来分享和发布消息。

因此,如果您正在搜索可以告诉您需要传递什么来调用设备中的任何特定商业应用程序的任何东西,您不会直接找到它。

于 2012-04-17T05:13:24.833 回答
0

这是一个老问题,但也许它可以帮助某人知道 Sony 的 AppXplore 应用程序(免费)显示您设备上安装的每个应用程序的活动包和名称,因此您最终可以使用它们来执行明确的意图。

于 2014-02-19T06:58:49.807 回答