简体   繁体   中英

How to check Whatsapp is installed in device in android?

I want to check that whether whatsapp is installed in mobile or not if installed then show toast "installed" and if not installed then show Toast "Not Installed".How can I do that Kindly help.

You can use this code. It will check if package is installed.

public class Example extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //Put the package name here...
        boolean installed = appInstalledOrNot("com.whatsapp");  
        if(installed) {
            System.out.println("App is already installed on your phone");         
        } else {
            System.out.println("App is not currently installed on your phone");
        }
    }

    private boolean isAppInstalled(String packageName) {
        PackageManager pm = getPackageManager();
        boolean app_installed;
        try {
            pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
            app_installed = true;
        }
        catch (PackageManager.NameNotFoundException e) {
            app_installed = false;
        }
        return app_installed;
    }
}

This is the code to get all package names of installed applications in device

 final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
    mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    final List pkgAppsList = context.getPackageManager().queryIntentActivities( mainIntent, 0);

after getting list of packages search for com.whatsapp(package name of whats app given on official webiste Whatsapp ). Thats it..

Try this.

Here you need to pass package name as uri.

private boolean appInstalledOrNot(String uri) {
        PackageManager pm = getPackageManager();
        boolean app_installed;
        try {
            pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
            app_installed = true;
        }
        catch (PackageManager.NameNotFoundException e) {
            app_installed = false;
        }
        return app_installed;
    }

Check condition like this.

if(!appInstalledOrNot("com.whatsapp")){
    // Toast message not installed.
}else{
    // Toast message installed.
}

Try like this:

public class WhatsApp_Check extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);        
        boolean installed = appInstalledOrNot("whatsapp_package_name");  
        if(installed) {
          //print whatsApp is already installed on your phone
            else{
           // print whatsApp is not currently installed on your phone
        }
    }

    private boolean appInstalledOrNot(String uri) {
        PackageManager pm = getPackageManager();
        boolean app_installed;
        try {
            pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
            app_installed = true;
        }
        catch (PackageManager.NameNotFoundException e) {
            app_installed = false;
        }
        return app_installed;
    }
}

Try this method:

private void checkWhatsapp() {
    String packageName = "com.whatsapp";
    String mesgToShare = "Hey, I am searching for Whatsapp in your device.";

    boolean gotPackage = false;
    Intent shareIntent = new Intent( android.content.Intent.ACTION_SEND );
    shareIntent.setType( "text/plain" );
    shareIntent.putExtra( android.content.Intent.EXTRA_TEXT, mesgToShare );
    List<ResolveInfo> activityList = getPackageManager().queryIntentActivities( shareIntent, 0 );
    for ( final ResolveInfo app : activityList ) {
        if ( (app.activityInfo.name).contains( packageName ) ) {
            gotPackage = true;
            final ActivityInfo activity = app.activityInfo;
            ComponentName name = new ComponentName( activity.applicationInfo.packageName, activity.name );
            shareIntent.addCategory( Intent.CATEGORY_LAUNCHER );
            shareIntent.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED );
            shareIntent.setComponent( name );
            startActivity( shareIntent );
            break; // We already found what we were looking for. Don't need to execute the rest of the Loop
        }
    }

    if ( !gotPackage )
        Log.e("TAG", "Whatsapp is not installed in your device");
}

based on @eliasz-kubala answer this will work for me on Android 11 after only adding this to Manifest

  <manifest 
    ...> 
    <queries> <package android:name="com.whatsapp" /> </queries>
  
    <application ....>
    </application>
  </manifest>

and Then use this Kotlin function

  private fun isAppInstalled(packageName: String): Boolean {
    val pm: PackageManager = getPackageManager()
    return try {
        pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES)
        true
    } catch (e: PackageManager.NameNotFoundException) {
        false
    }
   }
        if (isAppInstalled("com.whatsapp")) {
            val sendIntent = Intent("android.intent.action.MAIN")
            sendIntent.component = ComponentName("com.whatsapp", "com.whatsapp.Conversation")
            sendIntent.putExtra(
                "jid",
                PhoneNumberUtils.stripSeparators("918219243720").toString() + "@s.whatsapp.net"
            )

            startActivity(sendIntent)

        } else {
            showToast("App is not currently installed on your phone")
        }

Now Create fun()

private fun isAppInstalled(packageName: String): Boolean {
    return try {
        packageManager.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES)

        true
    } catch (ignored: PackageManager.NameNotFoundException) {
        false
    }
}

Now Add same lines in Manifest file

<queries>
    <package android:name="com.whatsapp" />
    <package android:name="com.facebook.katana" />
</queries>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM