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;}}
Без сомнения, ваш пост действительно полезен, но я получаю исключение «java.lang.RuntimeException: ошибка добавления окна» и «E / AndroidRuntime (7554): вызвано: android.os.TransactionTooLargeException 05-14 11: 37: 25.305 : E / AndroidRuntime (7554): на android.os.BinderProxy.transact (собственный метод) 05-14 11: 37: 25.305: E / AndroidRuntime (7554): на android.view.IWindowSession $ Stub $ Proxy.add (IWindowSession .java: 516) 05-14 11: 37: 25.305: E / AndroidRuntime (7554): at android.view.ViewRootImpl.setView (ViewRootImpl.java:494) "
DJhon
2
@BlueGreen: Привет, надеюсь, эта ссылка поможет вам, stackoverflow.com/questions/11451393/… , если вы используете Dialog Class, пожалуйста, проверьте его. :)
Эрроу
1
@ Эрроу .. Предположим, я проверяю, установлен ли мой .apk или нет? во время установки ... Я получаю такое же исключение при проверке моего пакета com.test.installedornot.Мой размер .apk больше 9 МБ, то в таком случае, как я буду управлять этим исключением?
DJhon
@BlueGreen: приведенный выше код будет проверять только установленное приложение, в момент установки это не будет работать. В вашем случае используйте Broadcast receive, чтобы получить уведомление после того, как этот apk установлен.
Эрроу
65
Несколько более чистое решение, чем принятый ответ (на основе этого вопроса ):
Этот ответ показывает, как получить приложение из Play Store, если оно отсутствует, хотя необходимо соблюдать осторожность на устройствах, на которых нет Play Store.
Проверьте приложение установлено или нет в Android с помощью kotlin.
Создание расширения kotlin.
fun PackageManager.isAppInstalled(packageName:String):Boolean=try{
getApplicationInfo(packageName,PackageManager.GET_META_DATA)true}catch(e:Exception){false}
Теперь можно проверить, установлено приложение или нет
if(packageManager.isAppInstalled("AppPackageName")){// App is installed}else{// App is not installed}
Этот код используется для проверки, установлено ли ваше приложение с именем пакета или нет, если нет, то откроется ссылка PlayStore вашего приложения, в противном случае ваше установленное приложение
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()}
Все ответы только проверить, установлено ли определенное приложение или нет. Но, как мы все знаем, приложение может быть установлено, но отключено пользователем, непригодно для использования.
Таким образом, это решение проверяет оба. т.е. установленные приложения с поддержкой AND .
Ответы:
Попробуйте с этим:
источник
Несколько более чистое решение, чем принятый ответ (на основе этого вопроса ):
Я решил поместить его в класс помощника в качестве статической утилиты. Пример использования:
Этот ответ показывает, как получить приложение из Play Store, если оно отсутствует, хотя необходимо соблюдать осторожность на устройствах, на которых нет Play Store.
источник
Приведенный выше код не работает для меня. Следующий подход сработал.
Создайте объект Intent с соответствующей информацией, а затем проверьте, вызывается ли Intent или нет, используя следующую функцию:
источник
if
заявления! Это, безусловно, правильный ответIntent intent = getPackageManager().getLaunchIntentForPackage("org.package.name");
Если вы знаете имя пакета, то это работает без использования блока try-catch или итерации по пакетам:
источник
return !list.isEmpty();
было бы более дружественным к стилю JavaЭтот код проверяет, установлено ли приложение, но также проверяет, включено ли оно.
источник
Я думаю, что использование шаблона try / catch не очень хорошо для производительности. Я советую использовать это:
источник
Более чистое решение (без try-catch), чем принятый ответ (на основе библиотеки AndroidRate ):
источник
Создание расширения kotlin.
Теперь можно проверить, установлено приложение или нет
источник
Попробуй это
источник
Более простая реализация с использованием Kotlin
И назовите это так (ищите приложение Spotify):
источник
@ Ответ Эгемена Хамутчу в котлине B-)
источник
Все ответы только проверить, установлено ли определенное приложение или нет. Но, как мы все знаем, приложение может быть установлено, но отключено пользователем, непригодно для использования.
Таким образом, это решение проверяет оба. т.е. установленные приложения с поддержкой AND .
Вызовите метод
isPackageInstalled()
:Теперь используйте логическую переменную
isAppInstalled
и делайте все, что вы хотите.источник
Классный ответ на другие проблемы. Если вы не хотите различать, например, «com.myapp.debug» и «com.myapp.release»!
источник
Так приятнее с котлинским шугером
источник