Один из наиболее распространенных способов передачи данных между приложениями на Android – это использование механизма намерений (Intent). При этом одно приложение создает намерение с необходимыми данными и запускает его, а другое приложение получает это намерение и обрабатывает его.
Также можно использовать {@link android.content.ContentProvider} или общую область (shared storage) для передачи данных, но это уже более продвинутые техники и они более подходят для передачи больших объемов данных.
Наверное, механизм намерений больше всего подойдет в вашем случае. Для этого вы можете создать второе приложение, которое будет получать намерение с текстовыми данными, шифровать их и возвращать обратно в первое приложение.
Вот пример того, как это может выглядеть на практике:
1. В первом приложении создаем и запускаем намерение:
```java
Intent intent = new Intent();
intent.setAction("com.example.ENCRYPT_TEXT");
intent.putExtra("text", "Hello, World!");
startActivityForResult(intent, 0);
```
2. Во втором приложении объявляем в AndroidManifest.xml обработку этого намерения:
```xml
<activity android:name=".EncryptActivity">
<intent-filter>
<action android:name="com.example.ENCRYPT_TEXT" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
```
3. Во втором приложении в EncryptActivity получаем и обрабатываем намерение:
```java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
String text = intent.getStringExtra("text");
String encryptedText = encrypt(text);
Intent result = new Intent();
result.putExtra("encryptedText", encryptedText);
setResult(RESULT_OK, result);
finish();
}
```
Код функции encrypt() не приведен, так как механизм шифрования зависит от ваших требований к безопасности.
И не забудьте обработать результат в первом приложении:
```java
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
String encryptedText = data.getStringExtra("encryptedText");
// ...
}
}
```
По поводу вашего второго вопроса, между activity и service стоит выбирать исходя из требуемой функциональности. Если вам нужно выполнять обработку в фоне, не прерывая работу пользователя с устройством, вам подойдет service. Если же обработка достаточно быстра и может быть выполнена в рамках пользовательского интерфейса, тогда можно использовать activity.
Если вы хотите превратить ваше приложение в библиотеку, вы можете создать библиотечный модуль в рамках вашего проекта, который затем можно подключить к другим проектам как зависимость.
Если же ваше приложение должно обрабатывать запросы от других приложений (как сервер), тогда вам стоит разработать соответствующий механизм через Intent или ContentProvider.