Как запустить приложения Android в моем приложении на Android?

В моем приложении есть макет вкладок. и две вкладки.

  • вкладка 1 - мое приложение enter image description here
  • вкладка 2 - любое внешнее приложение для Android (например, Контакты, вызов dialer и т.д.) (я знаю, как запускать внешнее приложение, но не работает в моем приложении (вкладка не отображается после запуск)).

Заранее спасибо

Ответ 1

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

Каждое приложение для Android работает в песочнице: http://developer.android.com/guide/topics/security/security.html

В частности:

Поскольку Android изолирует приложения от приложений, приложения должен явно делиться ресурсами и данными. Они делают это, объявляя необходимые им разрешения для дополнительных возможностей, не предоставляемых основная песочница. Приложения статически объявляют разрешения они требуют, и система Android запрашивает у пользователя согласие на время установки приложения. Android не имеет механизма для предоставление разрешений динамически (во время выполнения), поскольку это усложняет пользователя в ущерб безопасности.

Поэтому это было бы невозможно. Сначало кажется ошибочным или злым, но я бы серьезно пересмотрел ваш подход и переосмыслил преимущества, которые были связаны с невозможностью даже достичь того, что вы просите.

Ответ 2

По-моему, это невозможно.

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

Для этого вы показываете данные из зарубежного приложения в своей собственной деятельности. Сделайте это, вы запросите поставщика контента, которое предоставляет другое приложение (см. http://developer.android.com/guide/topics/providers/content-providers.html) в вашем действии списка (см. Полный пример в http://developer.android.com/reference/android/app/ListActivity.html) и включите этот ListActivity в свой TabHost.

Ответ 3

прочитайте документ (раздел намерения), например:

public class MyTab extends TabActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        final TabHost tabHost = getTabHost();

        Intent taskIntent = new Intent(this, Public.class);
        taskIntent.putExtra(Intent.ACTION_VIEW, "public");

        TabHost.TabSpec tsValid = tabHost.newTabSpec("public");
        tsValid.setIndicator(getText(R.string.tab_title_public));
        tsValid.setContent(taskIntent);

        tabHost.addTab(tsValid);

        Intent annIntent = new Intent(this, Private.class);
        annIntent.putExtra(Intent.ACTION_VIEW, "private");

        TabHost.TabSpec tsGenerate = tabHost.newTabSpec("private");
        tsGenerate.setIndicator(getText(R.string.tab_title_private));
        tsGenerate.setContent(annIntent);

        tabHost.addTab(tsGenerate);
    }

}