phonegap底层原理学习和研究(三)
????????????? 针对Phonegap开发中常用的DroidGap类继承自PhonegapActivity,PhonegapActivity继承自Activity。源代码如下:
/* * PhoneGap is available under *either* the terms of the modified BSD license *or* the * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text. * * Copyright (c) 2005-2010, Nitobi Software Inc. * Copyright (c) 2010, IBM Corporation */package com.phonegap.api;import android.app.Activity;import android.content.Intent;/** * The Phonegap activity abstract class that is extended by DroidGap. * It is used to isolate plugin development, and remove dependency on entire Phonegap library. */public abstract class PhonegapActivity extends Activity { /** * Add a class that implements a service. * * @param serviceType * @param className */ abstract public void addService(String serviceType, String className); /** * Send JavaScript statement back to JavaScript. * * @param message */ abstract public void sendJavascript(String statement); /** * Launch an activity for which you would like a result when it finished. When this activity exits, * your onActivityResult() method will be called. * * @param commandThe command object * @param intentThe intent to start * @param requestCodeThe request code that is passed to callback to identify the activity */ abstract public void startActivityForResult(IPlugin command, Intent intent, int requestCode); /** * Set the plugin to be called when a sub-activity exits. * * @param pluginThe plugin on which onActivityResult is to be called */ abstract public void setActivityResultCallback(IPlugin plugin); /** * Load the specified URL in the PhoneGap webview. * * @param urlThe URL to load. */ abstract public void loadUrl(String url);}
?
在使用这个类启动Webapp移动项目时候可以配置许多东西,如下:
This class is the main Android activity that represents the PhoneGapapplication. It should be extended by the user to load the specifichtml file that contains the application.As an example: package com.phonegap.examples; import android.app.Activity; import android.os.Bundle; import com.phonegap.*; public class Examples extends DroidGap { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Set properties for activity super.setStringProperty("loadingDialog", "Title,Message"); // show loading dialog super.setStringProperty("errorUrl", "file:///android_asset/www/error.html"); // if error loading file in super.loadUrl(). // Initialize activity super.init(); // Clear cache if you want super.appView.clearCache(true); // Load your application super.setIntegerProperty("splashscreen", R.drawable.splash); // load splash.jpg image from the resource drawable directory super.loadUrl("file:///android_asset/www/index.html", 3000); // show splash screen 3 sec before loading app } }
?
DroidGap中可以配置的属性如下:
Properties: The application can be configured using the following properties:
???? //加载时候加载对话框的信息
???? // Display a native loading dialog when loading app.? Format for value = "Title,Message".?
???? // (String - default=null)
???? super.setStringProperty("loadingDialog", "Wait,Loading Demo...");
???? //加载对话对话框
???? // Display a native loading dialog when loading sub-pages.? Format for value = "Title,Message".?
???? // (String - default=null)
???? super.setStringProperty("loadingPageDialog", "Loading page...");
???
???? // Cause all links on web page to be loaded into existing web view,
???? // instead of being loaded into new browser. (Boolean - default=false)
???? super.setBooleanProperty("loadInWebView", true);
??? //加载相关的动画信息
???? // Load a splash screen image from the resource drawable directory.
???? // (Integer - default=0)
???? super.setIntegerProperty("splashscreen", R.drawable.splash);
??? //设置默认的背景色
???? // Set the background color.
???? // (Integer - default=0 or BLACK)
???? super.setIntegerProperty("backgroundColor", Color.WHITE);
???? //设置超时时间
???? // Time in msec to wait before triggering a timeout error when loading
???? // with super.loadUrl().? (Integer - default=20000)
???? super.setIntegerProperty("loadUrlTimeoutValue", 60000);
??? //设置请求错误时候的提示页面
???? // URL to load if there's an error loading specified URL with loadUrl().?
???? // Should be a local URL starting with file://. (String - default=null)
???? super.setStringProperty("errorUrl", "file:///android_asset/www/error.html");
??? //是否在后台运行的功能
???? // Enable app to keep running in background. (Boolean - default=true)
???? super.setBooleanProperty("keepRunning", false);
????
Phonegap.xml的配置如下:
???? PhoneGap uses a configuration file at res/xml/phonegap.xml to specify the following settings.
???? //允许phonegap访问的路径和域
???? Approved list of URLs that can be loaded into DroidGap
???????? <access origin="http://server regexp" subdomains="true" />
?? //日志的模式
???? Log level: ERROR, WARN, INFO, DEBUG, VERBOSE (default=ERROR)
???????? <log level="DEBUG" />
Phonegap plugins:
???? PhoneGap uses a file at res/xml/plugins.xml to list all plugins that are installed.
???? Before using a new plugin, a new element must be added to the file.
???????? name attribute is the service name passed to PhoneGap.exec() in JavaScript
???????? value attribute is the Java class name to call.
????
???? <plugins>
???????? <plugin name="App" value="com.phonegap.App"/>
???????? ...
???? </plugins>