我可以通过cordova插件覆盖onCreate()函数

时间:2015-12-17 16:30:36

标签: android cordova plugins

默认情况下,在我创建一个cordova android项目后,MainActivity.java看起来像这样:

    import android.os.Bundle;
    import org.apache.cordova.*;

    public class MainActivity extends CordovaActivity
    {
         @Override
         public void onCreate(Bundle savedInstanceState)
         {
            super.onCreate(savedInstanceState);
            // Set by <content src="index.html" /> in config.xml
            loadUrl(launchUrl);
         }
      }

现在我需要在getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 之前添加一行loadUrl(launchUrl),以防止该应用进入睡眠模式。 但是出于某种原因我们不想破坏默认结构,也就是说,除了直接插入这行代码之外,我可以单独使用cordova插件覆盖onCreate()函数吗?

或者有没有人有想法实现让您的应用始终站在前面的目标?

1 个答案:

答案 0 :(得分:1)

在这里,我找到了一个解决方案,对我来说很好。

    public class KeepAwake extends CordovaPlugin {
       @Override
       public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
       if (action.equals("keepAwake")) {
            this.keepAwake(callbackContext);
            return true;
       }
       return false;
    }

    private void keepAwake(final CallbackContext callbackContext){
        cordova.getActivity().runOnUiThread(
        new Runnable() {
        public void run() {
          cordova.getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
          callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK));
        }
      });
    }
}