publicclassMainActivityextendsAppCompatActivity{@Overrideprotectedvoid onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);// Add respective layout
setContentView(R.layout.main_activity);// Use package name which we want to checkboolean isAppInstalled = appInstalledOrNot("com.check.application");if(isAppInstalled){//This intent will help you to launch if the package is already installedIntentLaunchIntent= getPackageManager().getLaunchIntentForPackage("com.check.application");
startActivity(LaunchIntent);Log.i("Application is already installed.");}else{// Do whatever we want to do if application not installed// For example, Redirect to play storeLog.i("Application is not currently installed.");}}privateboolean appInstalledOrNot(String uri){PackageManager pm = getPackageManager();try{
pm.getPackageInfo(uri,PackageManager.GET_ACTIVITIES);returntrue;}catch(PackageManager.NameNotFoundException e){}returnfalse;}}
Tidak diragukan posting Anda sangat membantu, tetapi saya mendapatkan pengecualian "java.lang.RuntimeException: Menambahkan jendela gagal" dan "E / AndroidRuntime (7554): Disebabkan oleh: android.os.TransactionTooLargeException 05-14 11: 37: 25.305 : E / AndroidRuntime (7554): di android.os.BinderProxy.transact (Metode Asli) 05-14 11: 37: 25.305: E / AndroidRuntime (7554): di android.view.IWindowSession $ Stub $ Proxy.add (IWindowSession .java: 516) 05-14 11: 37: 25.305: E / AndroidRuntime (7554): di android.view.ViewRootImpl.setView (ViewRootImpl.java:494) "
@Arrow .. Misalkan saya memeriksa .apk saya diinstal atau tidak? pada saat instalasi ... Saya mendapatkan pengecualian yang sama saat memeriksa paket saya com.test.installedornot.My. Ukuran .apk lebih dari 9MB lalu dalam hal ini bagaimana saya akan mengelola pengecualian ini?
DJhon
@BlueGreen: Kode di atas hanya akan memeriksa aplikasi yang diinstal, pada saat instalasi ini tidak akan berfungsi. Untuk kasus Anda, gunakan penerima Siaran untuk mendapatkan notifikasi setelah apk itu diinstal.
Aerrow
65
Solusi yang agak lebih bersih daripada jawaban yang diterima (berdasarkan pertanyaan ini ):
Jawaban ini menunjukkan cara mendapatkan aplikasi dari Play Store jika aplikasi tersebut tidak ada, meskipun harus berhati-hati pada perangkat yang tidak memiliki Play Store.
Periksa Aplikasi diinstal atau tidak di Android dengan menggunakan kotlin.
Membuat ekstensi kotlin.
fun PackageManager.isAppInstalled(packageName:String):Boolean=try{
getApplicationInfo(packageName,PackageManager.GET_META_DATA)true}catch(e:Exception){false}
Sekarang, dapat memeriksa apakah aplikasi diinstal atau tidak
if(packageManager.isAppInstalled("AppPackageName")){// App is installed}else{// App is not installed}
Kode ini digunakan untuk memeriksa cuaca aplikasi Anda dengan nama paket diinstal atau tidak jika tidak maka itu akan membuka tautan playstore dari aplikasi Anda jika tidak, aplikasi Anda yang terinstal
String your_apppackagename="com.app.testing";PackageManager packageManager = getPackageManager();ApplicationInfo applicationInfo =null;try{
applicationInfo = packageManager.getApplicationInfo(your_apppackagename,0);}catch(PackageManager.NameNotFoundException e){
e.printStackTrace();}if(applicationInfo ==null){// not installed it will open your app directly on playstore
startActivity(newIntent(Intent.ACTION_VIEW,Uri.parse("https://play.google.com/store/apps/details?id="+ your_apppackagename)));}else{// InstalledIntentLaunchIntent= packageManager.getLaunchIntentForPackage(your_apppackagename);
startActivity(LaunchIntent);}
private fun isAppInstalled(context:Context, uri:String):Boolean{
val packageInfoList = context.packageManager.getInstalledPackages(PackageManager.GET_ACTIVITIES)return packageInfoList.asSequence().filter { it?.packageName == uri }.any()}
Semua jawaban hanya memeriksa aplikasi tertentu diinstal atau tidak. Tapi, seperti kita ketahui aplikasi dapat diinstal tetapi dinonaktifkan oleh pengguna, tidak dapat digunakan.
Oleh karena itu, solusi ini memeriksa keduanya. yaitu, aplikasi yang diinstal DAN diaktifkan .
Jawaban:
Coba dengan ini:
sumber
Solusi yang agak lebih bersih daripada jawaban yang diterima (berdasarkan pertanyaan ini ):
Saya memilih untuk meletakkannya di kelas pembantu sebagai utilitas statis. Contoh penggunaan:
Jawaban ini menunjukkan cara mendapatkan aplikasi dari Play Store jika aplikasi tersebut tidak ada, meskipun harus berhati-hati pada perangkat yang tidak memiliki Play Store.
sumber
Kode di atas tidak berfungsi untuk saya. Pendekatan berikut berhasil.
Buat objek Intent dengan info yang sesuai dan kemudian periksa apakah Intent dapat dipanggil atau tidak menggunakan fungsi berikut:
sumber
if
pernyataan! Ini jelas jawaban yang tepatIntent intent = getPackageManager().getLaunchIntentForPackage("org.package.name");
Jika Anda tahu nama paket, maka ini berfungsi tanpa menggunakan blok coba-tangkap atau beralih melalui banyak paket:
sumber
return !list.isEmpty();
akan lebih ramah gaya javaKode ini memeriksa untuk memastikan aplikasi diinstal, tetapi juga memeriksa untuk memastikan aplikasi itu diaktifkan.
sumber
Saya pikir menggunakan pola coba / tangkap tidak terlalu baik untuk kinerja. Saya menyarankan untuk menggunakan ini:
sumber
Solusi yang lebih bersih (tanpa try-catch) daripada jawaban yang diterima (berdasarkan AndroidRate Library ):
sumber
Membuat ekstensi kotlin.
Sekarang, dapat memeriksa apakah aplikasi diinstal atau tidak
sumber
Coba ini
sumber
Implementasi yang lebih sederhana menggunakan Kotlin
Dan menyebutnya seperti ini (mencari aplikasi Spotify):
sumber
@Egemen Hamutçu menjawab di kotlin B-)
sumber
Semua jawaban hanya memeriksa aplikasi tertentu diinstal atau tidak. Tapi, seperti kita ketahui aplikasi dapat diinstal tetapi dinonaktifkan oleh pengguna, tidak dapat digunakan.
Oleh karena itu, solusi ini memeriksa keduanya. yaitu, aplikasi yang diinstal DAN diaktifkan .
Panggil metode
isPackageInstalled()
:Sekarang, gunakan variabel boolean
isAppInstalled
dan lakukan apa pun yang Anda inginkan.sumber
Jawaban keren untuk masalah lain. Misalnya, jika Anda tidak ingin membedakan "com.myapp.debug" dan "com.myapp.release"!
sumber
Jadi lebih baik dengan suger Kotlin:
sumber