Phonegap Screen-orientation plugin update for 2.7.0 or 2.8.0

前端 未结 1 921
天涯浪人
天涯浪人 2020-12-12 01:54

Is there anybody out there, who knows how to fix this plugin to work with the newest cordova/phonegap version?

I have no idea how i can fix the errors in eclipse and

1条回答
  •  离开以前
    2020-12-12 02:15

    You need to make the following changes:

    ScreenOrientation.java

    Replace with this:

    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-plugin-screen-orientation.js

    Replace with this:

    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;
    });
    

    Then you can replace sample.html with this:

    
    
        
            ScreenOrientation PhoneGap Plugin Sample
            
            
            
            
        
        
            

    ScreenOrientation PhoneGap Plugin Sample

    I've put this together as an Eclipse project - you can download it and the resulting APK here

    Note: You might want downgrade from Cordova 2.8.0 to Cordova 2.4.0 until issues with pausing the app in Cordova 2.5.0+ have been resolved - see here

    0 讨论(0)
提交回复
热议问题