From 1c45f3f0c357f8f7a4ad65d2b59ccf98c0aaf549 Mon Sep 17 00:00:00 2001 From: ShriPrakashBajpai Date: Thu, 5 Oct 2023 16:03:20 +0530 Subject: [PATCH] Whatsapp Business also included in feedback share --- android/app/src/main/AndroidManifest.xml | 1 + .../java/com/avapp/DeviceUtilsModule.java | 88 +++++++++++++------ 2 files changed, 63 insertions(+), 26 deletions(-) diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index dbaef9b9..49f09265 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -34,6 +34,7 @@ + isWhatsAppInstalled() { PackageManager packageManager = RNContext.getPackageManager(); List packages = packageManager.getInstalledPackages(PackageManager.GET_META_DATA); + ArrayList appsInstalled = new ArrayList(); for (PackageInfo packageInfo : packages) { String packageName = packageInfo.packageName; - if(packageName.equals("com.whatsapp")){ - return true; + if(packageName.equals("com.whatsapp") || packageName.equals("com.whatsapp.w4b")){ + appsInstalled.add(packageName); } } - return false; + return appsInstalled; + } + + public Intent getWhatsappShareIntent(String message, String imageUrl, String mimeType, String packageName) { + Intent sendIntent = new Intent(); + sendIntent.setAction(Intent.ACTION_SEND); + sendIntent.putExtra(Intent.EXTRA_TEXT, message); + + if (imageUrl.equals("")) { + sendIntent.setType("text/plain"); + sendIntent.setPackage(packageName); + } else { + sendIntent.setType(mimeType); + sendIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + imageFile = convertBase64ToFile(getReactApplicationContext(), imageUrl); + Uri fileUri = FileProvider.getUriForFile(getReactApplicationContext(), BuildConfig.APPLICATION_ID + ".provider", new File( + Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), + imageFile.getName() + ) + ); + sendIntent.putExtra(Intent.EXTRA_STREAM, fileUri); + sendIntent.setPackage(packageName); + } + + return sendIntent; } @ReactMethod public void sendFeedbackToWhatsapp(String message, String imageUrl, String mimeType, Promise promise) { try{ - if(!isWhatsAppInstalled()){ + ArrayList appsInstalled = isWhatsAppInstalled(); + int numberOfAppsInstalled = appsInstalled.size(); + + if(numberOfAppsInstalled == 0){ promise.reject("errorCode", "1"); return; } - Intent sendIntent = new Intent(); - sendIntent.setAction(Intent.ACTION_SEND); - sendIntent.putExtra(Intent.EXTRA_TEXT, message); - - if(imageUrl.equals("")) { - sendIntent.setType("text/plain"); - sendIntent.setPackage("com.whatsapp"); - getCurrentActivity().startActivity(sendIntent); - } else { - sendIntent.setType(mimeType); - sendIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); - imageFile = convertBase64ToFile(getReactApplicationContext(), imageUrl); - Uri fileUri = FileProvider.getUriForFile(getReactApplicationContext(), BuildConfig.APPLICATION_ID + ".provider", new File( - Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), - imageFile.getName() - ) - ); - sendIntent.putExtra(Intent.EXTRA_STREAM, fileUri); - sendIntent.setPackage("com.whatsapp"); + else if(numberOfAppsInstalled == 1) { + String packageName = appsInstalled.get(0); + Intent sendIntent = getWhatsappShareIntent(message, imageUrl, mimeType, packageName); getCurrentActivity().startActivityForResult(sendIntent, WHATSAPP_SHARE_REQUEST_CODE); + promise.resolve(true); + return; + } + + else { + String packageName1 = appsInstalled.get(0); + String packageName2 = appsInstalled.get(1); + Intent sendIntent1 = getWhatsappShareIntent(message, imageUrl, mimeType, packageName1); + Intent sendIntent2 = getWhatsappShareIntent(message, imageUrl, mimeType, packageName2); + ArrayList appIntents = new ArrayList<>(); + appIntents.add(sendIntent1); + appIntents.add(sendIntent2); + + Intent defaultIntent = new Intent(android.content.Intent.ACTION_SEND); + defaultIntent.setType("text/plain"); + defaultIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Default text to share"); + + Intent chooserIntent = Intent.createChooser(defaultIntent, "Share via"); + chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, appIntents.toArray(new Parcelable[appIntents.size()])); + getCurrentActivity().startActivityForResult(chooserIntent, WHATSAPP_SHARE_REQUEST_CODE); + + promise.resolve(true); + return; + } - promise.resolve(true); - return; } catch (Error e){ promise.reject("errorCode","2");