【问题标题】:How do we find the information for launching other app?我们如何找到启动其他应用程序的信息?
【发布时间】:2012-04-28 09:08:33
【问题描述】:

我需要允许用户绘制/素描/绘画一些东西。已经有很多应用程序(比如 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:但显然我无法通过这种方式获得任何返回结果(代码来自 here)。

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

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

【问题讨论】:

  • 您可能需要直接与 Skitch 人员交谈。

标签: android android-intent action manifest intentfilter


【解决方案1】:

您可能已经知道如何从您的应用中调用另一个应用 Activity ..这种方式 Mentioned Here.

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 应用程序以共享和发布消息。

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

【讨论】:

  • 感谢弗兰肯斯坦的帮助!我决定联系 Skitch(可能还有更多其他团队),看看他们是否可以提供此类信息。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    • 2015-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多