2012-11-05 5 views
2

PhoneGap 및 Jquery를 사용하여 앱을 작성하고 있습니다. 내 앱에는 패닉 버튼이 있으며 onclick은 미리 정의 된 번호를 자동으로 호출해야합니다. 나는 네이티브 안드로이드 다이얼러를 여는 것을 관리하고 있지만 여전히 사용자에게 다이얼을 보내기 위해 다시 클릭해야합니다.PhoneGap을 사용하여 Android에서 미리 정의 된 번호로 전화하기

앱에서 직접 전화를 걸려면 어떻게해야합니까?

답변

2

이 기능을 사용하려면 write a plugin이 필요합니다.

android.permission.CALL_PRIVILEGED 

당신의 AndroidManifest.xml에 : 당신이해야 할 첫번째 일은 추가합니다. 이렇게하면 Dialer 앱을 건너 뛰는 번호로 전화를 걸 수 있습니다. 플러그인 인터페이스에는 약간의 JavaScript 코드가 필요합니다.

cordova.define("cordova/plugin/emergencydialer", 
    function(require, exports, module) { 
    var exec = require("cordova/exec"); 
    var EmergencyDialer = function() {}; 

    var EmergencyDialerError = function(code, message) { 
     this.code = code || null; 
     this.message = message || ''; 
    }; 

    EmergencyDialer.CALL_FAILED = 0; 

    EmergencyDialer.prototype.call = function(telephoneNumber,success,fail) { 
     exec(success,fail,"EmergencyDialer", "call",[telephoneNumber]); 
    }; 

    var emergencyDialer = new EmergencyDialer(); 
    module.exports = emergencyDialer; 
}); 

그런 다음 전화를 걸려면 Java 코드를 작성해야합니다. 당신은 플러그인 클래스를 확장하는 새로운 클래스를 작성해야하고,이 같은 방법을 실행 쓸 것이다 :

당신이 고해상도/XML/설정에서 한 줄을 추가해야합니다,이 클래스를 호출간에
public PluginResult execute(String action, JSONArray args, String callbackId) { 
    PluginResult.Status status = PluginResult.Status.OK; 
    String result = ""; 

    try { 
     if (action.equals("call")) { 
      String number = "tel:" + args.getString(0); 
      Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse(number)); 
      this.cordova.getActivity().startActivity(callIntent); 
     } 
     else { 
      status = PluginResult.Status.INVALID_ACTION; 
     } 
     return new PluginResult(status, result); 
    } catch (JSONException e) { 
     return new PluginResult(PluginResult.Status.JSON_EXCEPTION); 
    } 
} 

. xml 파일을 생성하여 PluginManager가이를 생성 할 수 있도록한다.

<plugin name="EmergencyDialer" value="org.apache.cordova.plugins.EmergencyDialer"/> 

그리고 마지막으로 당신은 그들이 플러그인 작성하고 다음과 같이 호출해야합니다 자바 스크립트 코드에서

:

이 약을 어떻게해야
function panicButton() { 
    var emergencyDialer = cordova.require("cordova/plugin/emergencydialer"); 
    emergencyDialer.call("18005551212"); 
} 

.

+0

시도했지만 작동하지 않습니다. 그것은 어떤 오류도주지 않습니다. – Manthan

+0

'잘못된 동작'오류가 발생합니다. – Manthan

0

이 스레드는 조금 나이가 들지만 Google에서 인기있는 것 같습니다. 이제 https://github.com/anemitoff/PhoneGap-PhoneDialer에 플러그인이 추가되었습니다. 로컬 플러그인 설치에 대한 페이지 하단의 구문은 내가 익숙한 것과 약간 다르게 보이지만 로컬 플러그인 설치를 위해 권장되는 cordova 구문을 사용하면 문제가 없습니다. 당신이 익숙하지 않은 경우에 당신은 http://docs.phonegap.com/en/4.0.0/guide_cli_index.md.html에서 다양한 소스에서 플러그인 설치에 읽을 수 있으며, 우리는 단순히

cordova plugin add ../plugins/PhoneDialer 

처럼 뭔가를하고 그것은 좋은 일을하고 쉽게 구현할 수 있었다!

관련 문제