Как запустить приложения 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);
}
}