Как запустить Android-приложения в моем приложении на Android? - PullRequest
11 голосов
/ 23 декабря 2011

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

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

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

Ответы [ 3 ]

12 голосов
/ 02 января 2012

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

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

В частности:

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

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

1 голос
/ 07 января 2012

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

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

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

0 голосов
/ 23 декабря 2011

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

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);
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...