我如何将.apk文件用于我自己的应用程序android?

时间:2010-06-26 05:41:00

标签: android

在developer.android.com中我读到android的核心功能是你可以在自己的应用程序中使用其他应用程序的元素。我对这一行很感兴趣。 1)我们如何使用从Android市场下载的.apk下载到我们的应用程序? 2)我们如何将我们自己创建的应用程序用于新创建的应用程序?

请就此提供指导以及可能的样本片段吗?

此致 Rajendar

2 个答案:

答案 0 :(得分:1)

我猜您的意思是that

  

Android的核心功能是   一个应用程序可以使用   其他应用程序的元素   (如果申请许可的话   它)。例如,如果您的应用程序   需要显示滚动列表   图像和另一个应用程序   开发出合适的卷轴并制作而成   它可以给别人,你可以打电话   在那个卷轴上做这项工作,   而不是发展自己的。您的   申请不包含   其他应用程序或链接的代码   它。相反,它只是启动   另一个应用程序的那一块   当需要时。

最后两句话至关重要。链接提供了有关它的更多信息。但简单地说:应用程序作者可以以可以为其他人重用的方式编写他的代码。他/她可以通过将“意图过滤器”放入他/她的应用程序AndroidManifest.xml中来实现。例如。谷歌的相机应用程序(提供相机功能和图像库的应用程序 - 是的,应用程序可以“暴露”许多“入口点”=主屏幕中的图标)具有活动定义(许多之一)如下:

<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);
可以在一个Activity中定义的

CROPPING_RESULT_CODE用于区分返回的外部活动(如果有人调用多个外部函数,则有用),并且在调用活动的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 ... */

    }
}

其他选项正在使用:其他服务或内容提供商。

如果您还有其他问题,请不要犹豫。

答案 1 :(得分:0)

Android使用Intents允许应用程序请求工作由驻留在其他应用程序中的软件完成。有关Intents的更多详细信息,请参阅my answer to this question,以及应用程序如何要求浏览器应用程序显示网页的示例。