【发布时间】:2010-06-26 05:40:59
【问题描述】:
在 developer.android.com 我读到 android 的核心功能是你可以在你自己的应用程序中使用其他应用程序的元素。我对这一行很感兴趣。 1)我们如何使用从android市场下载的.apk到我们的应用程序? 2)我们如何将自己创建的应用程序应用到新创建的应用程序中?
请给我这方面的指导,如果可能的话,样品 sn-p?
问候, 拉金达尔
【问题讨论】:
标签: android
在 developer.android.com 我读到 android 的核心功能是你可以在你自己的应用程序中使用其他应用程序的元素。我对这一行很感兴趣。 1)我们如何使用从android市场下载的.apk到我们的应用程序? 2)我们如何将自己创建的应用程序应用到新创建的应用程序中?
请给我这方面的指导,如果可能的话,样品 sn-p?
问候, 拉金达尔
【问题讨论】:
标签: android
我猜你的意思是that:
Android 的一个核心功能是 一个应用程序可以利用 其他应用程序的元素 (如果这些应用程序允许 它)。例如,如果您的应用程序 需要显示一个滚动列表 图像和另一个应用程序有 开发了一个合适的卷轴并制作了 它可供其他人使用,您可以致电 在那个卷轴上做这项工作, 而不是自己开发。您的 应用程序不包含 其他应用程序或链接的代码 给它。相反,它只是启动 其他应用程序的那部分 当需要时。
最后两句至关重要。该链接提供了有关它的更多信息。但简而言之:应用程序作者可以以一种对其他人可重用的方式编写他的代码。他/她可以通过将“意图过滤器”放入他/她的应用程序的 AndroidManifest.xml 来做到这一点。例如。 Google 的相机应用程序(提供相机功能和图片库的应用程序 - 是的,该应用程序可以“公开”许多“入口点”= 主屏幕中的图标)具有如下活动定义(其中之一):
<activity android:name="CropImage" android:process=":CropImage" android:configChanges="orientation|keyboardHidden" android:label="@string/crop_label">
<intent-filter android:label="@string/crop_label">
<action android:name="com.android.camera.action.CROP"/>
<data android:mimeType="image/*"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.ALTERNATIVE"/>
<category android:name="android.intent.category.SELECTED_ALTERNATIVE"/>
</intent-filter>
</activity>
这意味着人们可以使用它通过发送意图来裁剪图像功能:
/* prepare intent - provide options that allow
Android to find functionality provider for you;
will match intent filter of Camera - for matching rules see:
http://developer.android.com/guide/topics/intents/intents-filters.html#ires */
Intent i = new Intent("com.android.camera.action.CROP");
i.addCategory(Intent.CATEGORY_DEFAULT);
i.setType("image/*");
/* put "input paramters" for the intent - called intent dependent */
i.putExtra("data", /*... Bitmap object ...*/);
i.putExtra( /*... other options, e.g. desired dimensions ...*/ );
/* "call desired functionality" */
startActivityForResult(i, /* code of return */ CROPPING_RESULT_CODE);
CROPPING_RESULT_CODE 可以在自己的 Activity 中定义,用于区分返回哪个外部 Activity(如果调用多个外部函数时很有帮助),并在调用 Activity 的 onActivityResult() 方法中提供,该方法在“远程”应用程序完成时调用 -下面是一个例子:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case CROPPING_RESULT_CODE:
/* ... crop returned ... */
if (data != null) {
/* get cropped bitmap */
Bitmap bmp = data.getParcelableExtra("data");
/* ... and do what you want ... */
}
case ANOTHER_RESULT_CODE:
/* ... another external content ... */
}
}
其他选项正在使用:其他服务或内容提供者。
如果您还有其他问题,请不要犹豫。
【讨论】:
Android 使用Intents 允许应用程序请求工作由驻留在其他应用程序中的软件完成。请参阅my answer to this question,了解有关 Intent 的更多详细信息以及您的应用程序如何要求浏览器应用程序显示网页的示例。
【讨论】: