-1

私のアプリケーションでは、アンドロイドアプリケーションのPhoneGapで着信/発信のためのTruecallerのような発信者名のウィンドウを開きたいと思います。私は電話や発信を受けるときに、自分のアプリケーションが閉じられていてもポップアップウィンドウを開きたいと思っています。PhoneGap Androidアプリのtruecallerのような着信呼び出し画面をポップアップする方法

マイコード

// 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ňishYadav:マイナスに投票しましたか? – Ved

+0

私はこれを読んでいませんでした[質問する](http://stackoverflow.com/help/dont-ask) – Gattsu

答えて

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)は、次の手順 を使用してこの問題を解決でこれらの権限を追加haved)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)あなたが設定で許可>アプリケーション> iPhoneアプリ> programtically

参考リンク上で許可ORにすることができますhttp://www.theappguruz.com/blog/detecting-incoming-phone-calls-in-android

+0

あなたはネイティブになってしまいましたか?イオンで成功しない?私は同じことをやろうとしている。 –

+0

@BernardParah Parah私はイオンでPOCをやった。 – Ved

+0

あなたが書いたコードはJavaです。それを私のプロジェクトにどのように追加しますか? –

関連する問題