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;}}
Sem dúvida, sua postagem é realmente útil, mas estou recebendo uma exceção "java.lang.RuntimeException: Falha na adição da janela" e "E / AndroidRuntime (7554): Causada por: android.os.TransactionTooLargeException 05-14 11: 37: 25.305 : E / AndroidRuntime (7554): em android.os.BinderProxy.transact (método nativo) 05-14 11: 37: 25.305: E / AndroidRuntime (7554): em android.view.IWindowSession $ Stub $ Proxy.add (IWindowSession .java: 516) 05-14 11: 37: 25.305: E / AndroidRuntime (7554): em android.view.ViewRootImpl.setView (ViewRootImpl.java:494) "
DJhon
2
@BlueGreen: Olá, espero que este link possa ajudá-lo, stackoverflow.com/questions/11451393/… ; caso contrário, se você estiver usando a Dialog Class, verifique-o. :)
Aerrow
1
@Aerrow .. Suponha que eu esteja verificando se meu .apk está instalado ou não? no momento da instalação ... Estou recebendo a mesma exceção ao verificar meu pacote com.test.installedornot. Meu tamanho de .apk é superior a 9 MB; nesse caso, como vou gerenciar essa exceção?
DJhon 14/05
@BlueGreen: o código acima verificará apenas o aplicativo instalado; no momento da instalação, isso não funcionará. Para o seu caso, use o Broadcast receiver para receber a notificação após a instalação do apk.
Aerrow
65
Solução um pouco mais limpa que a resposta aceita (com base nesta pergunta ):
Esta resposta mostra como obter o aplicativo da Play Store, se o aplicativo estiver ausente, embora seja necessário tomar cuidado em dispositivos que não possuem a Play Store.
O aplicativo Check está instalado ou não no Android usando o kotlin.
Criando extensão kotlin.
fun PackageManager.isAppInstalled(packageName:String):Boolean=try{
getApplicationInfo(packageName,PackageManager.GET_META_DATA)true}catch(e:Exception){false}
Agora, pode verificar se o aplicativo está instalado ou não
if(packageManager.isAppInstalled("AppPackageName")){// App is installed}else{// App is not installed}
Este código é usado para verificar se seu aplicativo com o nome do pacote está instalado ou não, caso contrário, ele abrirá o link playstore do seu aplicativo, caso contrário, o aplicativo instalado
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()}
Todas as respostas apenas verificam se determinado aplicativo está instalado ou não. Mas, como todos sabemos, um aplicativo pode ser instalado, mas desativado pelo usuário, inutilizável.
Portanto, esta solução verifica os dois. ou seja, aplicativos AND habilitados e instalados .
Respostas:
Tente com isto:
fonte
Solução um pouco mais limpa que a resposta aceita (com base nesta pergunta ):
Eu escolhi colocá-lo em uma classe auxiliar como um utilitário estático. Exemplo de uso:
Esta resposta mostra como obter o aplicativo da Play Store, se o aplicativo estiver ausente, embora seja necessário tomar cuidado em dispositivos que não possuem a Play Store.
fonte
O código acima não funcionou para mim. A seguinte abordagem funcionou.
Crie um objeto Intent com informações apropriadas e verifique se o Intent pode ser chamado ou não usando a seguinte função:
fonte
if
declarações! Definitivamente, esta é a resposta certaIntent intent = getPackageManager().getLaunchIntentForPackage("org.package.name");
Se você souber o nome do pacote, isso funcionará sem o uso de um bloco try-catch ou a iteração de vários pacotes:
fonte
return !list.isEmpty();
seria mais estilo java amigávelEsse código verifica se o aplicativo está instalado, mas também para garantir que ele esteja ativado.
fonte
Eu acho que usar o padrão try / catch não é muito bom para o desempenho. Eu aconselho a usar isso:
fonte
Solução mais limpa (sem tentativa de captura) do que a resposta aceita (com base na AndroidRate Library ):
fonte
Criando extensão kotlin.
Agora, pode verificar se o aplicativo está instalado ou não
fonte
Tente isto
fonte
Uma implementação mais simples usando Kotlin
E chame assim (procurando pelo aplicativo Spotify):
fonte
Resposta de @Egemen Hamutçu em kotlin B-)
fonte
Todas as respostas apenas verificam se determinado aplicativo está instalado ou não. Mas, como todos sabemos, um aplicativo pode ser instalado, mas desativado pelo usuário, inutilizável.
Portanto, esta solução verifica os dois. ou seja, aplicativos AND habilitados e instalados .
Chame o método
isPackageInstalled()
:Agora, use a variável booleana
isAppInstalled
e faça o que quiser.fonte
Uma resposta legal para outros problemas. Se você não deseja diferenciar "com.myapp.debug" e "com.myapp.release", por exemplo!
fonte
Tão agradável com Kotlin suger:
fonte