2016-02-27 2 views
1

Я новичок в программировании для Android. Я искал очень длинную пробку для номера входящего вызова. Мои попытки поиска не увенчались успехом. Я решил создать плагин. Я используется здесь в качестве примера, являются источниками: https://github.com/petervojtek/cordova-plugin-signal-strength/blob/master/src/org/apache/cordova/plugin/SignalStrength.java и https://github.com/don/cordova-plugin-helloОбнаружение входящего вызова на устройстве Android с помощью Cordova

Вот что я придумал:

package org.apache.cordova.plugin; 

import android.content.Context; 
import android.telephony.PhoneStateListener; 
import android.telephony.TelephonyManager; 
import org.apache.cordova.CordovaPlugin; 
import org.apache.cordova.CallbackContext; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 
import java.util.Date; 
import android.content.BroadcastReceiver; 
import android.content.Intent; 


public class SignalStrength extends CordovaPlugin { 

    CallStateListener ssListener; 
    String Number; 

    @Override 
    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { 
     if (action.equals("go")) { 
      TelephonyManager tm = (TelephonyManager) cordova.getActivity().getSystemService(Context.TELEPHONY_SERVICE); 
      ssListener = new CallStateListener(); 
      tm.listen(ssListener, PhoneStateListener.LISTEN_CALL_STATE); 
      callbackContext.success(name); 
      return true; 
     } 

     return false; 
    } 


    class CallStateListener extends PhoneStateListener { 

     @Override 
     public void onCallStateChanged(int state, String incomingNumber) { 
      switch (state) { 
       case TelephonyManager.CALL_STATE_RINGING: 
        // called when someone is ringing to this phone 
        String Number= incomingNumber; 
        break; 
      } 
     } 
    } 

} 

манифеста:

<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
... 
<receiver android:name=".CallReceiver"> 
    <intent-filter> 
     <action android:name="android.intent.action.PHONE_STATE" /> 
    </intent-filter> 
</receiver> 

Но, к сожалению возвращает NULL Помоги мне понимать.

ответ

1

Я использую этот плагин:

https://github.com/renanoliveira/cordova-phone-call-trap

использование очень прост:

if (window.PhoneCallTrap) { 
    PhoneCallTrap.onCall(function(state) { 
     console.log("CHANGE STATE: " + state); 

     switch (state) { 
      case "RINGING": 
       console.log("Phone is ringing"); 
       break; 
      case "OFFHOOK": 
       console.log("Phone is off-hook"); 
       break; 

      case "IDLE": 
       console.log("Phone is idle"); 
       break; 
     } 
    }); 
} 
+0

Этот плагин, кажется, удаляется из хранилища –

Смежные вопросы