Как вызвать или вызвать одно приложение из другого приложения в Android? - PullRequest
0 голосов
/ 04 апреля 2011

Я хочу вызвать одно приложение из другого приложения.

Код файла Java:

Intent intent = new Intent(Intent.ACTION_RUN);
intent.setComponent(new ComponentName("Package name", "class name"));
startActivity(intent);

Но у меня проблема с указанием точного пути к пакету, и я не знаю разрешения для этого кода в манифесте. Пожалуйста, помогите мне в этом.

Ответы [ 3 ]

4 голосов
/ 04 апреля 2011

Я предполагаю, что вы действительно имеете в виду, что вы хотите запустить другое приложение, а не другое действие в вашем приложении.

Тогда есть два способа сделать это.Вы можете попытаться использовать неявное намерение, которое, согласно документам, (неявное) намерение является «абстрактным описанием выполняемой операции», которое «обеспечивает выполнение позднего связывания во время выполнения между кодом в разных приложениях».Вроде как пытаться запустить метод по проводам с помощью интерфейса.Вы не можете точно знать, какой класс объекта, который запускается, только в том, что он может обрабатывать действие и категории, которые вы объявляете.

Второй подход - это явное намерение, которое больше похоже на конкретный вызов надпровод.Если вы знаете имя пакета и класса, это должно сработать.

    Intent intent = new Intent(Intent.ACTION_MAIN);
    //intent.putExtra("plain_text", "Testing");
    intent.setClassName("packagename", "packagename.ClassName"); // Explicit Intent
    try {
        startActivity(intent);
    }
    catch (Exception e)
    {
        Log.d(TAG","onCreate",e);
    }
}

Вы можете добавить дополнительную информацию, используя флаги в зависимости от ваших потребностей и того, откуда вы пытаетесь запустить.

JAL

3 голосов
/ 04 апреля 2011

Запуск внешнего действия из вашего приложения выполняется с использованием метода, немного отличающегося от того, который вы используете.Вам необходимо создать намерение с заданным действием .Например, запуск намерения получить изображение из галереи будет выглядеть следующим образом:

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, IMAGE_PICK);

Обратите внимание, что вы явно не определяете загружаемое действие, а скорее действие, которое вы хотите выполнить,Затем Android выберет (или попросит пользователя) действие, которое было зарегистрировано, для обработки такого рода намерения.

2 голосов
/ 04 апреля 2011

Возможно, вам нужно быть немного более точным в том, что вы делаете. Если все, что вы хотите сделать, это, скажем, запустить другое действие из вашего основного действия, что-то вроде этого будет работать:

Intent intent = new Intent(this, OtherActivity.class);
intent.putExtra("key", "data"); //put any data you want to pass into the new activity
startActivity(intent);

Тогда просто убедитесь, что вы добавили новое действие в манифест следующим образом:

<activity android:name=".OtherActivity"
      android:label="@string/other"/>

Если ваша цель заключается в чем-то другом, то вам следует уделять особое внимание тому, что вы хотите сделать.

...