Whatsapp Business also included in feedback share

This commit is contained in:
ShriPrakashBajpai
2023-10-05 16:03:20 +05:30
parent 30ce556666
commit 1c45f3f0c3
2 changed files with 63 additions and 26 deletions

View File

@@ -34,6 +34,7 @@
<queries>
<package android:name="com.whatsapp" />
<package android:name="com.whatsapp.w4b" />
</queries>
<uses-permission android:name="android.permission.USE_EXACT_ALARM"/>
<application

View File

@@ -25,6 +25,7 @@ import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Environment;
import android.os.Handler;
import android.os.Parcelable;
import android.util.Base64;
@@ -32,6 +33,7 @@ import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
import android.net.Uri;
@@ -125,50 +127,84 @@ public class DeviceUtilsModule extends ReactContextBaseJavaModule {
}
}
public boolean isWhatsAppInstalled() {
public ArrayList<String> isWhatsAppInstalled() {
PackageManager packageManager = RNContext.getPackageManager();
List<PackageInfo> packages = packageManager.getInstalledPackages(PackageManager.GET_META_DATA);
ArrayList<String> appsInstalled = new ArrayList<String>();
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<String> 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<Intent> 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");