有没有人,谁知道如何修复this插件才能使用最新的cordova / phonegap版本?
我不知道如何修复eclipse中的错误,我真的需要一种方法来改变我的phonegap应用程序中几个页面的方向!
答案 0 :(得分:4)
您需要进行以下更改:
<强> ScreenOrientation.java 强>
替换为:
package com.tsukurusha.phonegap.plugins;
import org.json.JSONArray;
import org.json.JSONException;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import org.apache.cordova.api.CallbackContext;
import org.apache.cordova.api.CordovaPlugin;
public class ScreenOrientation extends CordovaPlugin {
// Refer to http://developer.android.com/reference/android/R.attr.html#screenOrientation
private static final String UNSPECIFIED = "unspecified";
private static final String LANDSCAPE = "landscape";
private static final String PORTRAIT = "portrait";
private static final String USER = "user";
private static final String BEHIND = "behind";
private static final String SENSOR = "sensor";
private static final String NOSENSOR = "nosensor";
private static final String SENSOR_LANDSCAPE = "sensorLandscape";
private static final String SENSOR_PORTRAIT = "sensorPortrait";
private static final String REVERSE_LANDSCAPE = "reverseLandscape";
private static final String REVERSE_PORTRAIT = "reversePortrait";
private static final String FULL_SENSOR = "fullSensor";
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if (action.equals("set")) {
String orientation = args.optString(0);
Activity activity = this.cordova.getActivity();
if (orientation.equals(UNSPECIFIED)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
} else if (orientation.equals(LANDSCAPE)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else if (orientation.equals(PORTRAIT)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else if (orientation.equals(USER)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_USER);
} else if (orientation.equals(BEHIND)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_BEHIND);
} else if (orientation.equals(SENSOR)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
} else if (orientation.equals(NOSENSOR)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
} else if (orientation.equals(SENSOR_LANDSCAPE)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
} else if (orientation.equals(SENSOR_PORTRAIT)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
} else if (orientation.equals(REVERSE_LANDSCAPE)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
} else if (orientation.equals(REVERSE_PORTRAIT)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
} else if (orientation.equals(FULL_SENSOR)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR);
}
callbackContext.success();
return true;
} else {
return false;
}
}
}
<强> PG-插件屏幕-orientation.js 强>
替换为:
cordova.define("cordova/plugin/screenorientation", function(require, exports, module) {
var exec = require('cordova/exec');
var ScreenOrientation = function() {};
ScreenOrientation.prototype.set = function(str, successCallback, errorCallback) {
exec(successCallback,
errorCallback,
'ScreenOrientation',
'set',
[str]);
};
var screenorientation = new ScreenOrientation();
module.exports = screenorientation;
});
然后您可以将 sample.html 替换为:
<!DOCTYPE html>
<html>
<head>
<title>ScreenOrientation PhoneGap Plugin Sample</title>
<meta charset="utf-8">
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8" src="pg-plugin-screen-orientation.js"></script>
<script type="text/javascript">
function setOrientation(type){
cordova.require('cordova/plugin/screenorientation').set(
type,
function() {
console.log("Successfully set "+type);
},
function() {
console.error("Failed to set "+type);
}
);
}
</script>
</head>
<body>
<h1>ScreenOrientation PhoneGap Plugin Sample</h1>
<input type="button" onclick="setOrientation('landscape');" value="Landscape" />
<input type="button" onclick="setOrientation('portrait');" value="Portrait" />
<input type="button" onclick="setOrientation('sensorLandscape');" value="Sensor Landscape" />
<input type="button" onclick="setOrientation('sensorPortrait');" value="Sensor Portrait" />
<input type="button" onclick="setOrientation('reverseLandscape');" value="Reverse Landscape" />
<input type="button" onclick="setOrientation('reversePortrait');" value="Reverse Portrait" />
<input type="button" onclick="setOrientation('fullSensor');" value="Full Sensor" />
</body>
</html>
我把它作为Eclipse项目放在一起 - 你可以下载它和生成的APK here
注意:您可能需要将Cordova 2.8.0降级到Cordova 2.4.0,直到解决了在Cordova 2.5.0+中暂停应用程序的问题 - see here