VegeFruits v7.1版本的 MD5 值为:2ff167dfba698c783e879938fe00b9ce

以下内容为反编译后的 MyUnityActivity.java 源代码,内容仅作参考


package net.cleverbit.vkplugin;

import android.R;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Build;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.amazon.android.Kiwi;
import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;
import com.vk.sdk.VKAccessToken;
import com.vk.sdk.VKCaptchaDialog;
import com.vk.sdk.VKSdk;
import com.vk.sdk.VKSdkListener;
import com.vk.sdk.VKUIHelper;
import com.vk.sdk.api.VKApi;
import com.vk.sdk.api.VKApiConst;
import com.vk.sdk.api.VKError;
import com.vk.sdk.api.VKParameters;
import com.vk.sdk.api.VKRequest;
import com.vk.sdk.api.VKResponse;
import com.vk.sdk.api.model.VKApiPhoto;
import com.vk.sdk.api.model.VKAttachments;
import com.vk.sdk.api.model.VKPhotoArray;
import com.vk.sdk.api.model.VKWallPostResult;
import com.vk.sdk.util.VKUtil;
import java.io.File;
import java.io.IOException;

public class MyUnityActivity extends UnityPlayerActivity {
    Runnable immersiveRunnable;
    private static final String[] sMyScope = {"wall", "photos", "nohttps"};
    static int counter = 0;
    private Boolean _immersiveOn = false;
    private boolean isVkInitialized = false;
    private String callBackGameObjectName = "Main Camera";
    private VKRequest currentRequest = null;
    private boolean isCancelled = false;
    ProgressDialog pd = null;
    private final VKSdkListener sdkListener = new VKSdkListener() {
        @Override
        public void onCaptchaError(VKError captchaError) {
            ActivityCaptchaDialog.show(VKUIHelper.getTopActivity(), captchaError);
        }

        @Override
        public void onTokenExpired(VKAccessToken expiredToken) {
            VKSdk.authorize(MyUnityActivity.sMyScope);
            MyUnityActivity.this.RefreshStatus();
        }

        @Override
        public void onAccessDenied(VKError authorizationError) {
            MyUnityActivity.this.RefreshStatus();
            new AlertDialog.Builder(MyUnityActivity.this).setMessage(authorizationError.errorMessage).show();
        }

        @Override
        public void onReceiveNewToken(VKAccessToken newToken) {
            MyUnityActivity.this.RefreshStatus();
        }

        @Override
        public void onAcceptUserToken(VKAccessToken token) {
            MyUnityActivity.this.RefreshStatus();
        }
    };

    @Override
    public void onCreate(Bundle icicle) {
        Kiwi.onCreate((Activity) this, false);
        Log.d("DIS", "MyUnityActivity.onCreate");
        super.onCreate(icicle);
        this.immersiveRunnable = new Runnable() {
            @Override
            public void run() {
                if (!MyUnityActivity.this._immersiveOn.booleanValue()) {
                    return;
                }
                MyUnityActivity.this._GoImmersiveMode(true);
            }
        };
    }

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        if (hasFocus && this._immersiveOn.booleanValue()) {
            _GoImmersiveMode(true);
        }
    }

    public Boolean IsKitKat() {
        int SDK_INT = Build.VERSION.SDK_INT;
        return SDK_INT >= 19;
    }

    public void _GoImmersiveMode(Boolean immersiveOn) {
        if (IsKitKat().booleanValue()) {
            Log.d("DIS", "MyUnityActivity.GoImmersiveMode: " + immersiveOn);
            this._immersiveOn = immersiveOn;
            View mDecorView = getWindow().getDecorView();
            if (immersiveOn.booleanValue()) {
                mDecorView.setSystemUiVisibility(5894);
            } else {
                mDecorView.setSystemUiVisibility(1792);
            }
        }
    }

    public void GoImmersiveMode(final boolean immersiveOn) {
        if (IsKitKat().booleanValue()) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    MyUnityActivity.this._GoImmersiveMode(Boolean.valueOf(immersiveOn));
                }
            });
        }
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (this._immersiveOn.booleanValue() && (keyCode == 25 || keyCode == 24)) {
            Log.d("DIS", "onKeyDown(VOLUME_BUTTON) -> Immersive!");
            getWindow().getDecorView().postDelayed(this.immersiveRunnable, 500L);
        }
        return super.onKeyDown(keyCode, event);
    }

    public void VK_Initialize(String vkAppId, String callBackGameObjectName) {
        String[] fingerprint = VKUtil.getCertificateFingerprint(this, getPackageName());
        Log.d("Fingerprint", fingerprint[0]);
        Log.d("DIS", "VK_Initialize: " + vkAppId + " GO:" + callBackGameObjectName);
        this.callBackGameObjectName = callBackGameObjectName;
        if (!this.isVkInitialized) {
            VKUIHelper.onCreate(this);
            VKSdk.initialize(this.sdkListener, vkAppId);
            this.isVkInitialized = true;
            Log.d("DIS", "Initialized");
        }
        VKSdk.wakeUpSession();
        RefreshStatus();
    }

    public void VK_Login(boolean forceOAuth) {
        Log.d("DIS", "VK_Login: " + forceOAuth);
        try {
            VKSdk.authorize(sMyScope, true, forceOAuth);
        } catch (Exception e) {
            showError("LOGIN ERROR:" + e.getMessage());
            e.printStackTrace();
        }
        RefreshStatus();
    }

    public void VK_Logout() {
        Log.d("DIS", "VK_Logout");
        VKSdk.logout();
        RefreshStatus();
    }

    public void VK_UploadPhotoToWall(final String msg, String imgFileName) {
        Log.d("DIS", "UploadPhotoToWall, File:" + imgFileName);
        this.isCancelled = false;
        File image = new File(imgFileName);
        VKRequest request = VKApi.uploadWallPhotoRequest(image, 0L, 0);
        SetRequest(request);
        request.executeWithListener(new VKRequest.VKRequestListener() {
            @Override
            public void onComplete(VKResponse response) {
                MyUnityActivity.this.SetRequest(null);
                Log.d("DIS", "onComplete(VKResponse response)");
                if (!MyUnityActivity.this.isCancelled) {
                    VKApiPhoto photoModel = ((VKPhotoArray) response.parsedModel).get(0);
                    MyUnityActivity.this.makePost(new VKAttachments(photoModel), msg);
                }
            }

            @Override
            public void onError(VKError error) {
                MyUnityActivity.this.SetRequest(null);
                MyUnityActivity.this.showError(error);
            }
        });
    }

    public void VK_WallPostAward(String wallMessage, String imgFileName) {
        VK_WallPostAward(wallMessage, imgFileName, "");
    }

    public void VK_WallPostAward(final String wallMessage, String imgFileName, String progressMessage) {
        Log.d("DIS", "UploadPhotoToWall, File:" + imgFileName);
        this.isCancelled = false;
        if (!progressMessage.isEmpty()) {
            ShowProgressDialog(progressMessage);
        }
        File image = new File(imgFileName);
        VKRequest request = VKApi.uploadWallPhotoRequest(image, 0L, 0);
        SetRequest(request);
        request.executeWithListener(new VKRequest.VKRequestListener() {
            @Override
            public void onComplete(VKResponse response) {
                MyUnityActivity.this.SetRequest(null);
                Log.d("DIS", "onComplete(VKResponse response)");
                if (!MyUnityActivity.this.isCancelled) {
                    VKApiPhoto photoModel = ((VKPhotoArray) response.parsedModel).get(0);
                    MyUnityActivity.this.makePost(new VKAttachments(photoModel), wallMessage);
                }
            }

            @Override
            public void onError(VKError error) {
                MyUnityActivity.this.SetRequest(null);
                MyUnityActivity.this.HideProgressDialog();
                MyUnityActivity.this.showError(error);
            }
        });
    }

    public void VK_WallPost(String message) {
        makePost(null, message);
    }

    public boolean VK_isLoggedIn() {
        return VKSdk.isLoggedIn();
    }

    public boolean VK_isRequestInProgress() {
        return this.currentRequest != null;
    }

    public void VK_CancelRequest() {
        if (this.currentRequest != null) {
            Log.d("DIS", "VK_CancelRequest()");
            try {
                this.currentRequest.cancel();
            } catch (Exception e) {
                Log.d("DIS", "VK_CancelRequest() ERROR:" + e.getMessage());
                e.printStackTrace();
            }
        }
    }

    public void VK_InputDialog(final String captionText, final String inputText, final String inputHint, final String buttonOkMessage, final String buttonCancelMessage) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Log.d("DIS", "VK_AlertDialog() RUN");
                MyUnityActivity.this._VK_InputDialog(captionText, inputText, inputHint, buttonOkMessage, buttonCancelMessage);
            }
        });
    }

    public void _VK_InputDialog(String captionText, String inputText, String inputHint, final String buttonOkMessage, final String buttonCancelMessage) {
        Log.d("DIS", "_VK_InputDialog() + " + inputText);
        AlertDialog.Builder alert = new AlertDialog.Builder(this, 5);
        alert.setMessage(captionText);
        alert.setCancelable(false);
        final EditText input = new EditText(this);
        input.setSingleLine();
        input.setImeOptions(268435456);
        input.setText(inputText);
        input.setHint(inputHint);
        input.setRawInputType(8192);
        alert.setView(input);
        alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int whichButton) {
                String value = input.getText().toString();
                Log.d("DIS", "inputText : " + value);
                UnityPlayer.UnitySendMessage(MyUnityActivity.this.callBackGameObjectName, buttonOkMessage, value);
            }
        });
        alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                String value = input.getText().toString();
                UnityPlayer.UnitySendMessage(MyUnityActivity.this.callBackGameObjectName, buttonCancelMessage, value);
            }
        });
        AlertDialog dialog = alert.show();
        final Button ok = dialog.getButton(-1);
        ok.setEnabled(input.getText().toString().trim().equals("") ? false : true);
        input.addTextChangedListener(new TextWatcher() {
            @Override
            public void afterTextChanged(Editable s) {
                ok.setEnabled(!input.getText().toString().trim().equals(""));
            }

            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
            }
        });
    }

    public void ShowMessage(String header, String message, boolean cancelable) {
        final AlertDialog.Builder alert = new AlertDialog.Builder(this, 3);
        if (!header.isEmpty()) {
            alert.setTitle(header);
        }
        alert.setMessage(message);
        alert.setCancelable(cancelable);
        alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int whichButton) {
                Log.d("DIS", "ShowMessage OK");
            }
        });
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Log.d("DIS", "ShowMessage() RUN");
                alert.show();
            }
        });
    }

    public void ShowToastMessage(final String message) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(MyUnityActivity.this.getApplicationContext(), message, 0).show();
            }
        });
    }

    public void ShowProgressDialog(final String message) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Log.d("DIS", "VK_AlertDialog() RUN");
                MyUnityActivity.this.__ShowProgressDialog(message);
            }
        });
    }

    public void __ShowProgressDialog(String message) {
        if (this.pd == null) {
            this.pd = new ProgressDialog(this, 5);
            this.pd.setMessage(message);
            this.pd.setCancelable(false);
            this.pd.setButton(-1, getString(R.string.cancel), new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    MyUnityActivity.this.VK_CancelRequest();
                    MyUnityActivity.this.HideProgressDialog();
                }
            });
            this.pd.show();
            return;
        }
        Log.d("DIS", "ERROR: pd != null");
    }

    public void HideProgressDialog() {
        if (this.pd != null) {
            Log.d("DIS", "HideProgressDialog()");
            this.pd.dismiss();
            this.pd = null;
        }
    }

    protected void RefreshStatus() {
        Log.d("DIS", "RefreshStatus(), Connected:" + VKSdk.isLoggedIn() + " Work:" + VK_isRequestInProgress());
        UnityPlayer.UnitySendMessage(this.callBackGameObjectName, "onVkRefreshStatus", "");
    }

    protected void SetRequest(VKRequest request) {
        Log.d("DIS", "SetRequest(" + (request != null) + ")");
        this.currentRequest = request;
        RefreshStatus();
    }

    private Bitmap getPhoto() {
        try {
            Bitmap b = BitmapFactory.decodeStream(getAssets().open("android.jpg"));
            return b;
        } catch (IOException e) {
            e.printStackTrace();
            return null;
        }
    }

    public void makePost(VKAttachments attachments, String message) {
        Log.d("DIS", "makePost");
        this.isCancelled = false;
        VKRequest post = VKApi.wall().post(VKParameters.from(VKApiConst.ATTACHMENTS, attachments, "message", message, VKApiConst.FRIENDS_ONLY, "0"));
        post.setModelClass(VKWallPostResult.class);
        SetRequest(post);
        post.executeWithListener(new VKRequest.VKRequestListener() {
            @Override
            public void onComplete(VKResponse response) {
                Log.d("DIS", "onComplete(VKResponse response)");
                MyUnityActivity.this.SetRequest(null);
                super.onComplete(response);
                MyUnityActivity.this.HideProgressDialog();
                UnityPlayer.UnitySendMessage(MyUnityActivity.this.callBackGameObjectName, "onVkSuccess", "");
            }

            @Override
            public void onError(VKError error) {
                MyUnityActivity.this.SetRequest(null);
                MyUnityActivity.this.HideProgressDialog();
                MyUnityActivity myUnityActivity = MyUnityActivity.this;
                if (error.apiError != null) {
                    error = error.apiError;
                }
                myUnityActivity.showError(error);
                UnityPlayer.UnitySendMessage(MyUnityActivity.this.callBackGameObjectName, "onVkError", "");
            }
        });
    }

    public void showError(VKError error) {
        Log.d("DIS", "showError:" + error.errorMessage);
        String msg = error.errorMessage == null ? "Unknown error" : error.errorMessage;
        new AlertDialog.Builder(this).setMessage(msg).setPositiveButton("OK", (DialogInterface.OnClickListener) null).show();
        if (error.httpError != null) {
            Log.w("Test", "Error in request or upload", error.httpError);
        }
    }

    private void showError(final String errorMessage) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                MyUnityActivity.this._showError(errorMessage);
            }
        });
    }

    public void _showError(String errorMessage) {
        Log.d("DIS", "showError:" + errorMessage);
        String msg = errorMessage == null ? "Unknown error" : errorMessage;
        new AlertDialog.Builder(this).setMessage(msg).setPositiveButton("OK", (DialogInterface.OnClickListener) null).show();
    }

    @Override
    public void onResume() {
        Kiwi.onResume(this);
        Log.d("DIS", "MyUnityActivity.onResume()");
        super.onResume();
        VKUIHelper.onResume(this);
    }

    @Override
    public void onDestroy() {
        Kiwi.onDestroy(this);
        Log.d("DIS", "MyUnityActivity.onDestroy()");
        super.onDestroy();
        VKUIHelper.onDestroy(this);
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (Kiwi.onActivityResult(this, requestCode, resultCode, data)) {
            return;
        }
        Log.d("DIS", "MyUnityActivity.onActivityResult() = " + resultCode);
        super.onActivityResult(requestCode, resultCode, data);
        VKUIHelper.onActivityResult(requestCode, resultCode, data);
    }

    public int ReturnInt() {
        Log.d("DIS", "MyUnityActivity.ReturnInt()");
        VKError captchaError = new VKError(VKError.VK_API_ERROR);
        captchaError.captchaImg = "http://sakhscape.ru/zp-core/zp-extensions/zpCaptcha/c.php?i=65368ce2";
        new VKCaptchaDialog(captchaError).show();
        int i = counter;
        counter = i + 1;
        return i + 1000;
    }

    public int StartActivity2() {
        Log.d("DIS", "Starting Activity2");
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Log.d("DIS", "VK_AlertDialog() RUN");
                MyUnityActivity.this.ShowProgressDialog("Проверка диалога");
            }
        });
        int i = counter;
        counter = i + 1;
        return i + 1000;
    }
}