我需要允许用户绘制/素描/绘画一些东西。已经有很多应用程序(例如 Skitch,我将以此作为示例)可以完成此任务。所以我不想重新发明轮子。
在Android中,理论上,我们可以通过Intent来启动其他Activity。这有点像 Unix 中的“管道”。
问题是,我不知道如何获取启动 Skitch 的信息。
要将 Skitch 集成到我的应用程序中,我需要知道它支持的操作、完成时返回的 Intent (如果有)。
我安装了 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共享/获取此类信息的唯一方法?
或者如果您对我的问题有任何建议,请帮助我。
谢谢!
最佳答案
因为您可能已经知道如何从您的应用程序调用另一个应用程序 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");
}
您的所有要求主要是调用任何 Activity 的两件事
1) 该 Activity 的包名称 2) Activity 类名称
这两个信息只有在开源或免费使用的情况下才可用..例如 Zxing、Google map 应用程序。
还有另一种方式来启动应用程序 Activity ,例如,
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" + numberField.getText())); // set the Uri
startActivity(intent);
要使用这种方式,需要知道要调用的 Activity 的正确操作以及要传递的正确参数。
再说一遍,这些信息只有在开源或免费使用的情况下才可用。例如 Facebook 和 Gmail 应用程序来共享和发布消息。
因此,如果您正在搜索类似的内容,可以告诉您需要传递什么信息来调用设备中的任何特定商业应用程序,您将无法直接找到它。
关于android - 我们如何找到启动其他应用程序的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10184256/