-1

В моем приложении я хочу открыть окно с именем вызывающего абонента, например Truecaller, для входящего/исходящего вызова в PhoneGap для приложения android. Я имею в виду, когда я получаю звонок или исходящий звонок, я хочу открыть всплывающее окно, даже когда мое приложение закрыто.Как всплывающее окно на экране входящих звонков, как truecaller в приложении Android PhoneGap

Мой код

// Enable background mode 
cordova.plugins.backgroundMode.enable(); 

// Called when background mode has been activated 
cordova.plugins.backgroundMode.onactivate = function() { 


    setInterval(function() { 

     PhoneCallTrap.onCall(function(state) { 
      console.log("CHANGE STATE: " + state); 
      if (state == "RINGING") { 
       var now = new Date().getTime(), 
        _5_sec_from_now = new Date(now + 1 * 1000); 
       var sound = device.platform == 'Android' ? 'file://sound.mp3' : 'file://beep.caf'; 
       cordova.plugins.notification.local.schedule({ 
        id: 1, 
        title: 'Call', 
        text: 'Test Message 1', 
        at: _5_sec_from_now, 
        sound: sound, 
        badge: 12 
       }); 
      } 
     }); 

    }, 1000); 
} 

Но это не работает, когда мое приложение закрыто.

+0

Пожалуйста, покажите, что ты пытался так далеко? – Gattsu

+0

@ Maňish Yadav: Вы проголосовали за минусом? – Ved

+0

Я не ... прочитайте это [как спросить] (http://stackoverflow.com/help/dont-ask) – Gattsu

ответ

1

Я haved решить эту проблему, используя следующие шаги

1) Добавить эти разрешения в AndroiMainFest.xml

<receiver android:name=".PhoneStateReceiver" android:enabled="true" 
     android:exported="true"> 
     <intent-filter android:exported="true"> 
      <action android:name="android.intent.action.PHONE_STATE" /> 
      <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     </intent-filter> 
</receiver> 

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
<uses-permission android:name="android.permission.CALL_PHONE" /> 
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 

2) Создание PhoneStateReceiver.java

public class PhoneStateReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     Toast.makeText(context, "Intent Detected.", Toast.LENGTH_LONG).show(); 
     // This is where you start your service   

     try { 
      System.out.println("Receiver start"); 
      String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE); 
      String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER); 

      if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) { 
       Toast.makeText(context, "Incoming Call State", Toast.LENGTH_SHORT).show(); 
       Toast.makeText(context, "Ringing State Number is -" + incomingNumber, Toast.LENGTH_SHORT).show(); 
      } 
      if ((state.equals(TelephonyManager.EXTRA_STATE_OFFHOOK))) { 
       Toast.makeText(context, "Call Received State", Toast.LENGTH_SHORT).show(); 
      } 
      if (state.equals(TelephonyManager.EXTRA_STATE_IDLE)) { 
       Toast.makeText(context, "Call Idle State", Toast.LENGTH_SHORT).show(); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

    } 
} 

3) Добавить в MainActivity.java

if (ContextCompat.checkSelfPermission(getApplicationContext(), 
     Manifest.permission.READ_PHONE_STATE) != 
    PackageManager.PERMISSION_GRANTED) { 

    if (ActivityCompat.shouldShowRequestPermissionRationale(this, 
      Manifest.permission.READ_CONTACTS)) {} else { 
     ActivityCompat.requestPermissions(this, 
      new String[] { 
       Manifest.permission.READ_PHONE_STATE 
      }, 
      MY_PERMISSIONS_REQUEST_READ_PHONE_STATE); 
    } 
} 

4) Вы можете на разрешение в настройке> App> Ваш App> разрешение ИЛИ На ими программным

Reference Ссылка:http://www.theappguruz.com/blog/detecting-incoming-phone-calls-in-android

+0

Вы закончили тем, что стали родными? нет успеха с ионной? Я пытаюсь сделать то же самое –

+0

@BernardParah Parah Я сделал свой POC с ионным. – Ved

+0

Код, который вы написали, является Java. Как добавить это в свой проект? –