Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我们如何找到启动其他应用程序的信息?_Android_Android Intent_Action_Manifest_Intentfilter - Fatal编程技术网

Android 我们如何找到启动其他应用程序的信息?

Android 我们如何找到启动其他应用程序的信息?,android,android-intent,action,manifest,intentfilter,Android,Android Intent,Action,Manifest,Intentfilter,我需要允许用户绘制/绘制/绘制一些东西。已经有很多应用程序(比如Skitch,我将以此为例)完成了这项任务。所以我不想重新发明轮子。 从理论上讲,在安卓系统中,我们可以根据意图启动其他活动。这有点像Unix中的“管道”。 问题是,我不知道如何获取启动Skitch的信息。 要将Skitch集成到我的应用程序中,我需要知道它支持的操作,以及完成时返回的意图(如果有) 我在我的设备中安装了Skitch和许多其他触摸绘图应用程序,但此代码不起作用: Uri data = Uri.fromFile(fil

我需要允许用户绘制/绘制/绘制一些东西。已经有很多应用程序(比如Skitch,我将以此为例)完成了这项任务。所以我不想重新发明轮子。
从理论上讲,在安卓系统中,我们可以根据意图启动其他活动。这有点像Unix中的“管道”。
问题是,我不知道如何获取启动Skitch的信息。
要将Skitch集成到我的应用程序中,我需要知道它支持的操作,以及完成时返回的意图(如果有)

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

Uri data = Uri.fromFile(file);
Intent i = new Intent(Intent.ACTION_EDIT);
i.setData(data);
i.setType("image/*");                               
startActivityForResult(i, ACTIVITY_DRAW);
我可以通过以下方式从我的应用程序启动Skitch:但显然,我无法通过这种方式获得任何返回的结果(来自的代码)

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

谢谢大家!

因为您可能已经知道如何从您的应用程序调用另一个应用程序活动。。这样

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"); 
} 
要使用此方法,您需要知道要调用的活动的正确操作以及要传递的正确参数

同样,这些信息只有在开源或免费使用的情况下才可用。。像Facebook和Gmail应用程序一样,可以共享和发布消息


因此,如果你正在搜索任何类似的东西,这些东西可以告诉你需要通过什么才能调用你设备中的任何特定商业应用程序,你将无法直接找到它。

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

您可能需要直接与Skitch人员交谈。感谢您的帮助Frankenstein!我决定联系Skitch(也许还有更多的其他团队),看看他们是否能提供这样的信息。
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"); 
} 
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:" + numberField.getText())); // set the Uri
startActivity(intent);