@Denisca2828

Как передавать данные между программами на android?

Например, я хочу написать программу, в которой нужно ввести текст, нажать на кнопку и данные отправятся в другое приложение. В этом приложении данные зашифровываются и сразу возвращаются в первое приложение будто результат выполнения функции. Функция шифрования должна быть именно во втором приложении.
Грубо говоря, я хочу использовать либо activity, либо service, либо что-то ещё для того, чтобы "сделать" библиотеку(или сервер, который будет обрабатывать запросы) из android приложения, которой можно будет отправить запрос(строка) и получить ответ(строка).
  • Вопрос задан
  • 142 просмотра
Пригласить эксперта
Ответы на вопрос 2
@402d
начинал с бейсика на УКНЦ в 1988
activity : раньше вызываем startActivityForResult, ответ получаем через возращаемый интент. Сейчас правильнее через ActivityResultLauncher и ActivityResultContracts.
В приложении, которое вызываем особых изменений нет. Делаем setResult(RESULT_OK, intent); finish();

service: тут потребуется разобраться с aidl. Из приложения клиента биндимся на службу, после удачного соединения вызываем удаленные методы. В приложении сервере определяем экспортируемую службу. Этот вариант предполагает, что хорошо разбираетесь с потоками. executor, handler
Ответ написан
@AlexVWill
Можно сделать как то так. Это рабочий пример из одного приложения, которое содержимое буфера обмена передает в другое приложение com.mydev.myappname в активити activityname:
if (clipupsync) {
                    Intent clipupintent = new Intent();
                    clipupintent.setPackage("com.mydev.myappname");
                    PackageManager pm = getPackageManager();
                    @SuppressLint("QueryPermissionsNeeded")
                    List<ResolveInfo> resolveInfos = pm.queryIntentActivities(clipupintent, 0);
                    Collections.sort(resolveInfos, new ResolveInfo.DisplayNameComparator(pm));
                    if (resolveInfos.size() > 0) {
                        Intent i = new Intent(clipupintent);
                        ComponentName name = new ComponentName("com.mydev.myappname", "com.mydev.myappname.activityname");
                        i.setComponent(name);
                        i.putExtra("clipuploader", resulturl);
                        i.setType("text/plain");
                        startActivity(i);
                    }
                }


В открываемой активити прнимающего приложения должно быть что-то вроде этого:
@Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        clipboard = getIntent()
                .getCharSequenceExtra(Intent.EXTRA_PROCESS_TEXT);
        if (clipboard == null){
            clipboard = getIntent().getStringExtra("clipuploader");
        }
       
        CharSequence cliptoshare = clipboard;
        clipboard = null;
        new Sharing().getClipboard(cliptoshare, this);
        finish();
        // process the text
    }
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы