Как устанавливать приложения программно, не открывая Play Store (как Google Диск)

Сегодня приложение Google Диска спросило, хочу ли я установить новые приложения «Листы и документы».

Я принял, ожидая, что он откроет Google Play Store, чтобы я мог нажать кнопку установки.

Это не так . Он просто показал мне всплывающее окно с разрешениями каждого из приложений, чтобы подтвердить установку, то же самое, что появляется, когда вы нажимаете «Установить» в любом приложении в Play Маркете.

Я не знал, что это можно сделать.

Как мы можем воспроизвести это поведение в приложении: есть кнопка «Установить приложение XPTO», которой не нужно открывать Google Play Store? Просто показывает диалог с правами доступа и переходит к установке через Play Маркет?


ОБНОВИТЬ:

Для тех, кто стремится, потому что они думают, что это то же самое, что и другие вопросы … Это не так!

В этом случае APK не загружается приложением Google Диска, а затем устанавливается. Google Диск " сообщает " Play Store для загрузки и установки.

Это API, который мне интересен.

Чтобы поддержать мой случай: после нажатия INSIDE Google Drive для установки приложений без открытия Play Маркета начинается загрузка . Во время загрузки я открыл Play Store для проверки и:

Введите описание изображения здесь

Скриншот доказывает, что Google DSC не загружает APK и не устанавливает его. Это Play Store.

Solutions Collecting From Web of "Как устанавливать приложения программно, не открывая Play Store (как Google Диск)"

Журналы для Google Диска показывают, что деятельность, ответственная за «указание» в Google Play Store для установки приложений,

 com.google.android.apps.docs/com.google.android.apps.docs.app.PhoneskyApplicationInstallerActivity 

Который, по-видимому, «говорит»,

 com.android.vending/com.google.android.finsky.billing.lightpurchase.LightPurchaseFlowActivity 

Для установки необходимых пакетов.

Итак, теоретически можно было бы создать намерение

 Intent intent = new Intent("com.android.vending.billing.PURCHASE"); intent.setClassName("com.android.vending", "com.google.android.finsky.billing.lightpurchase.LightPurchaseFlowActivity"); intent.putExtra(EXTRA_NAME, EXTRA_VALUE); startActivityForResult(intent, 0); 

С правильными дополнительными значениями и вуаля!

Однако вызов LightPurchaseFlowActivity из приложения, не подписанного Google, терпит неудачу, потому что они снова, по-видимому (согласно журналам), проверяют подпись вызывающего пакета:

 W/Finsky(13209): [1] LightPurchaseFlowActivity.setupFromExternalPurchaseIntent: Called from untrusted package. 

Таким образом, этого нельзя достичь в данный момент.

Google+ теперь реализует кнопки, в которых вы можете напрямую загрузить приложение (см. Эту ссылку ), не нажимая кнопку на сайте магазина воспроизведения.

Ссылка выглядит так: https://play.google.com/store/apps/details?id=com.example.app&rdid=com.example.app&rdot=1&feature=md

Если вы добавите параметр rdid, rdot и feature, он будет работать на моем телефоне (если я напечатаю его в браузере, не проверял с намерением и не тестировал обновление приложения, а только его установку).

Изменить :

Я узнал, что вам нужно только добавить rdid -параметр в URL. Источник: http://www.androidb.com/2014/04/increase-app-installs-with-a-single-trick/

Edit2:

Не работает с намерением. 🙁

Я бы сказал, что на Google Диске есть системные разрешения, как в Play Маркете. Вероятно, потому что он подписан с подписью Google.

Если вам удастся получить разрешение «android.permission.INSTALL_PACKAGES», вы можете вызвать API (который не включен в android.jar, развернутый диспетчером SDK, вам нужно получить скрытые API-интерфейсы от android.jar в эмуляторе для Экземпляр) для установки приложений.

Итак, в основном, если у вас нет системных разрешений (путем добавления APK в / system / app, подписанного с сертификатом OEM или с помощью root), вы не сможете это сделать.

Источник: уже запрограммированы некоторые системные приложения

— ОБНОВИТЬ

Конечно, в игровом магазине может быть какая-то дверь, которую вы можете использовать для установки любого приложения, но для этого, вероятно, требуются разрешения, которые вы не можете получить самостоятельно

Если вы знаете, где у вас есть файл apk, вы можете легко.

 File file = new File(dir, "YourApp.apk"); Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive"); startActivity(intent);