Skip to content
This repository has been archived by the owner on Oct 22, 2022. It is now read-only.

Commit

Permalink
new argument to bypass app chooser
Browse files Browse the repository at this point in the history
  • Loading branch information
nishilshah17 committed Nov 10, 2015
1 parent 79333b3 commit 978d936
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 5 deletions.
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,11 @@ npm install call-number

Use the plugin in your JS file:
``` javascript
window.plugins.CallNumber.callNumber(onSuccess, onError, number);
window.plugins.CallNumber.callNumber(onSuccess, onError, number, bypassAppChooser);
```

number: String; phone number to call (e.g. "1234567890")

bypassAppChooser: boolean; true if you always wish to bypass the app chooser if user has multiple applications installed that can handle calls

Make sure to create onSuccess and onError call back functions.
27 changes: 25 additions & 2 deletions src/android/CFCallNumber.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,20 @@ public class CFCallNumber extends CordovaPlugin
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
String number = args.getString(0);
number = number.replaceAll("#","%23");

if( number.startsWith("tel:") == false){
number = String.format("tel:%s", number);
}

try {
Intent intent = new Intent(isTelephonyEnabled() ? Intent.ACTION_CALL : Intent.ACTION_VIEW);
intent.setData(Uri.parse(number));

boolean bypassAppChooser = Boolean.parseBoolean(args.getString(1));
if(bypassAppChooser) {
intent.setPackage(getDialerPackage());
}

cordova.getActivity().startActivity(intent);
callbackContext.success();
}
Expand All @@ -36,7 +42,24 @@ public boolean execute(String action, JSONArray args, CallbackContext callbackCo

private boolean isTelephonyEnabled(){
TelephonyManager tm = (TelephonyManager)cordova.getActivity().getSystemService(Context.TELEPHONY_SERVICE);

return tm != null && tm.getPhoneType() != TelephonyManager.PHONE_TYPE_NONE;
}

private String getDialerPackage(){
PackageManager packageManager = cordova.getPackageManager();
List activities = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);

for(int i = 0 ; i < activities.size() ; i++) {
if(activities.get(i).toString().toLowerCase().contains("com.android.server.telecom")) {
return "com.android.server.telecom";
}
if(activities.get(i).toString().toLowerCase().contains("com.android.phone")) {
return "com.android.phone";
}
else if(activities.get(i).toString().toLowerCase().contains("call")) {
return activities.get(i).toString().split("[ ]")[1].split("[/]")[0];
}
}
return "";
}
}
4 changes: 2 additions & 2 deletions www/CallNumber.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
var CallNumber = function(){};

CallNumber.prototype.callNumber = function(success, failure, number){
cordova.exec(success, failure, "CallNumber", "callNumber", [number]);
CallNumber.prototype.callNumber = function(success, failure, number, bypassAppChooser){
cordova.exec(success, failure, "CallNumber", "callNumber", [number, bypassAppChooser]);
};

//Plug in to Cordova
Expand Down

0 comments on commit 978d936

Please sign in to comment.