Полагаю, вы имеете в виду , что :
Главная особенность Android состоит в том, что одно приложение может использовать элементы других приложений (при условии, что эти приложения разрешают это).Например, если ваше приложение должно отображать список прокрутки изображений, а другое приложение разработало подходящий скроллер и сделал его доступным для других, вы можете вызвать этот скроллер для выполнения работы, а не для разработки собственного.Ваше приложение не содержит код другого приложения или ссылку на него.Скорее, он просто запускает ту часть другого приложения, когда возникает необходимость.
Два последних предложения имеют решающее значение.И ссылка предоставляет больше информации об этом.Но вкратце: автор приложения может написать свой код таким образом, чтобы его можно было использовать повторно для других.Он / она может сделать это, вставив «фильтры намерений» в * / 1009 * своего приложения.Например, приложение «Камера 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
, которое можно определить в своей деятельности, используется для определения того, какая внешняя активность вернулась (полезно, если вызывается несколько внешних функций) и предоставляется в методе вызова 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 ... */
}
}
Используются другие варианты: другие службы или ContentProviders..
Если у вас есть еще вопросы, не стесняйтесь.