Android'e programlı olarak Uygulama Yükleme

Özel bir Android uygulamasından dinamik olarak indirilen bir apk'yi programlı olarak yüklemenin mümkün olup olmadığını bilmek istiyorum.

Çözüm

Bir oyun mağazası bağlantısını veya bir yükleme istemini kolayca başlatabilirsiniz:

Intent promptInstall = new Intent(Intent.ACTION_VIEW)
    .setDataAndType(Uri.parse("content:///path/to/your.apk"), 
                    "application/vnd.android.package-archive");
startActivity(promptInstall); 

veya

Intent goToMarket = new Intent(Intent.ACTION_VIEW)
    .setData(Uri.parse("https://play.google.com/store/apps/details?id=com.package.name"));
startActivity(goToMarket);

Ancak, kullanıcının açık izni olmadan .apks yükleyemezsiniz; cihaz ve programınız root edilmediği sürece.

Yorumlar (16)

Daha derine indim ve Android Source'dan PackageInstaller uygulamasının kaynaklarını buldum.

https://github.com/android/platform_packages_apps_packageinstaller

Manifestodan bunun izin gerektirdiğini öğrendim:

Ve asıl kurulum süreci onaylandıktan sonra gerçekleşir

Intent newIntent = new Intent();
newIntent.putExtra(PackageUtil.INTENT_ATTR_APPLICATION_INFO, mPkgInfo.applicationInfo);
newIntent.setData(mPackageURI);
newIntent.setClass(this, InstallAppProgress.class);
String installerPackageName = getIntent().getStringExtra(Intent.EXTRA_INSTALLER_PACKAGE_NAME);
if (installerPackageName != null) {
   newIntent.putExtra(Intent.EXTRA_INSTALLER_PACKAGE_NAME, installerPackageName);
}
startActivity(newIntent);
Yorumlar (1)

Evet bu mümkün. Ancak bunun için telefona doğrulanmamış kaynaklar yüklemeniz gerekir. Örneğin, slideMe bunu yapar. Bence yapabileceğiniz en iyi şey, uygulamanın mevcut olup olmadığını kontrol etmek ve Android Market için bir niyet göndermektir. android Market için url şeması gibi bir şey kullanmalısınız.

market://details?id=package.name

Etkinliği nasıl başlatacağımı tam olarak bilmiyorum ama bu tür bir url ile bir etkinlik başlatırsanız. Android marketi açmalı ve size uygulamaları yükleme seçeneği sunmalıdır.

Yorumlar (1)