2013-09-23 22 views
0

我们创建的HTML代码中使用此从工作灯应用

document.location.href = 'tel:'+ phoneNumber; 

乍看起来是工作,也就是说,它启动拨号器,使从WL应用程序内的电话拨打电话,拨打电话,当电话结束时,它意味着回到WL应用程序,但是它从头开始重新启动WL应用程序,从启动屏幕开始它,这不是所需的行为,如预计拨号程序结束后,它会返回到拨号程序启动之前的WL应用程序。

关于如何解决这个问题的任何想法?

回答

0

不知道是否所有的步骤是必要的..但​​在这里。

1)声明中的活动singleInstance机器人:launchMode = “singleInstance”

2)在此的manifest.xml代码添加到你的活动

private PhoneStateListener callListener; 

@Override 
public void onCreate(Bundle savedInstanceState) { 

    callListener = new EndCallListener(); 
    ... 
} 

private class EndCallListener extends PhoneStateListener { 

    private final String LOG_TAG = "EndCallListener"; 

    private boolean isPhoneCalling = false; 

    @Override 
    public void onCallStateChanged(int state, String incomingNumber) { 

     if (TelephonyManager.CALL_STATE_RINGING == state) { 
      Log.i(LOG_TAG, "RINGING, number: " + incomingNumber); 
      // finish(); 
     } 
     if (TelephonyManager.CALL_STATE_OFFHOOK == state) { 
      // wait for phone to go offhook (probably set a boolean flag) so 
      // you know your app initiated the call. 
      Log.i(LOG_TAG, "OFFHOOK"); 
      isPhoneCalling = true; 
     } 
     if (TelephonyManager.CALL_STATE_IDLE == state) { 
      // when this state occurs, and your flag is set, restart your 
      // app 
      Log.i(LOG_TAG, "IDLE"); 
      if (TelephonyManager.CALL_STATE_IDLE == state) { 
       // run when class initial and phone call ended, 
       // need detect flag from CALL_STATE_OFFHOOK 
       Log.i(LOG_TAG, "IDLE"); 

       if (isPhoneCalling) { 

        Log.i(LOG_TAG, "restart app"); 

        // restart app 
        Intent i = getBaseContext().getPackageManager() 
          .getLaunchIntentForPackage(
            getBaseContext().getPackageName()); 
        // i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
        i.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
        startActivity(i); 

        isPhoneCalling = false; 
       } 

      } 
     } 
    } 
} 

3)

<uses-permission android:name="android.permission.CALL_PHONE" /> 
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 
+0

不好意思错过了WL是一个跨平台开发框架的事实。不知道这是否有帮助,然后呢? – cYrixmorten

+0

嗨cYrixmorten。事实上,我正在寻找一些中立的东西来充分利用Worklight平台。不管怎么说,还是要谢谢你。 – GDM

0

你现在正在做的方式是用tel URL替换Worklight应用程序。您需要在自己的窗口中启动URL。

用途:

window.open("tel:5551212"); 

这将暂停应用程序,并启动手机。当您退出手机时,应用程序将恢复。

+0

我已经尝试了两种方法。同样的结果,WL应用程序不会恢复,实际上,它重新启动。 \t function doSomething2(){ \t \t window.open('tel:+12101525572','_self'); \t} – GDM

+0

_self很棘手,并且依赖于白名单。使用:doSomething2(){window.open('tel:+12101525572','_blank'); } –

+0

我刚刚尝试了“_self”,那也适用于我。该应用程序在后台运行,当我退出电话时,它将继续运行而不重新启动。我认为在低资源手机上操作系统可能会在手机应用程序运行时主动关闭所有其他应用程序。您是否可以打开其他应用程序,拨打电话并返回给他们而不重新启动它们?你如何退出手机? –