com.limemobile.app.plugin.PluginClientFragmentActivity.java Source code

Java tutorial

Introduction

Here is the source code for com.limemobile.app.plugin.PluginClientFragmentActivity.java

Source

/*
 * Copyright (C) 2014 achellies
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.limemobile.app.plugin;

import java.util.List;

import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.res.Resources;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.LoaderManager;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.view.WindowManager;

import com.limemobile.app.plugin.internal.PluginClientInfo;
import com.limemobile.app.plugin.internal.PluginClientManager;

public class PluginClientFragmentActivity extends FragmentActivity implements IPluginActivity {
    protected Activity mContext;

    protected FragmentActivity mProxyActivity;

    protected PluginClientInfo mPluginPackage;

    @Override
    public void setDelegate(Activity proxyActivity, PluginClientInfo pluginPackage) {
        mProxyActivity = (FragmentActivity) proxyActivity;
        mPluginPackage = pluginPackage;
        mContext = mProxyActivity;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        if (mProxyActivity == null) {
            mContext = this;
            WindowManager.LayoutParams parmas = mContext.getWindow().getAttributes();
            parmas.softInputMode = getwindowSoftInputMode();
            super.onCreate(savedInstanceState);
        } else if (mContext != null) {
            WindowManager.LayoutParams parmas = mContext.getWindow().getAttributes();
            parmas.softInputMode = getwindowSoftInputMode();
        }
    }

    @Override
    public void onPostCreate(Bundle savedInstanceState) {
        if (mProxyActivity == null) {
            super.onPostCreate(savedInstanceState);
        }
    }

    @Override
    public void setContentView(View view) {
        if (mProxyActivity == null) {
            super.setContentView(view);
        } else {
            mProxyActivity.setContentView(view);
        }
    }

    @Override
    public void setContentView(View view, LayoutParams params) {
        if (mProxyActivity == null) {
            super.setContentView(view, params);
        } else {
            mProxyActivity.setContentView(view, params);
        }
    }

    @Override
    public void setContentView(int layoutResID) {
        if (mProxyActivity == null) {
            super.setContentView(layoutResID);
        } else {
            mProxyActivity.setContentView(layoutResID);
        }
    }

    @Override
    public void addContentView(View view, LayoutParams params) {
        if (mProxyActivity == null) {
            super.addContentView(view, params);
        } else {
            mProxyActivity.addContentView(view, params);
        }
    }

    @Override
    public View findViewById(int id) {
        if (mProxyActivity == null) {
            return super.findViewById(id);
        } else {
            return mProxyActivity.findViewById(id);
        }
    }

    @Override
    public Intent getIntent() {
        if (mProxyActivity == null) {
            return super.getIntent();
        } else {
            return mProxyActivity.getIntent();
        }
    }

    @Override
    public ClassLoader getClassLoader() {
        if (mProxyActivity == null) {
            return super.getClassLoader();
        } else {
            return mProxyActivity.getClassLoader();
        }
    }

    @Override
    public Resources getResources() {
        if (mProxyActivity == null) {
            return super.getResources();
        } else {
            return mProxyActivity.getResources();
        }
    }

    @Override
    public String getPackageName() {
        if (mProxyActivity == null) {
            return super.getPackageName();
        } else {
            return mPluginPackage.mPackageName;
        }
    }

    @Override
    public LayoutInflater getLayoutInflater() {
        if (mProxyActivity == null) {
            return super.getLayoutInflater();
        } else {
            return mProxyActivity.getLayoutInflater();
        }
    }

    @Override
    public MenuInflater getMenuInflater() {
        if (mProxyActivity == null) {
            return super.getMenuInflater();
        } else {
            return mProxyActivity.getMenuInflater();
        }
    }

    @Override
    public SharedPreferences getSharedPreferences(String name, int mode) {
        if (mProxyActivity == null) {
            return super.getSharedPreferences(name, mode);
        } else {
            return mProxyActivity.getSharedPreferences(name, mode);
        }
    }

    @Override
    public Context getApplicationContext() {
        if (mProxyActivity == null) {
            return super.getApplicationContext();
        } else {
            return mProxyActivity.getApplicationContext();
        }
    }

    @Override
    public WindowManager getWindowManager() {
        if (mProxyActivity == null) {
            return super.getWindowManager();
        } else {
            return mProxyActivity.getWindowManager();
        }
    }

    @Override
    public Window getWindow() {
        if (mProxyActivity == null) {
            return super.getWindow();
        } else {
            return mProxyActivity.getWindow();
        }
    }

    @Override
    public Object getSystemService(String name) {
        if (mProxyActivity == null) {
            return super.getSystemService(name);
        } else {
            return mProxyActivity.getSystemService(name);
        }
    }

    @Override
    public void finish() {
        if (mProxyActivity == null) {
            super.finish();
        } else {
            mProxyActivity.finish();
        }
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (mProxyActivity == null) {
            super.onActivityResult(requestCode, resultCode, data);
        }
    }

    @Override
    public void onBackPressed() {
        if (mProxyActivity == null) {
            super.onBackPressed();
        }
    }

    @Override
    public void onStart() {
        if (mProxyActivity == null) {
            super.onStart();
        }
    }

    @Override
    public void onRestart() {
        if (mProxyActivity == null) {
            super.onRestart();
        }
    }

    @Override
    public void onRestoreInstanceState(Bundle savedInstanceState) {
        if (mProxyActivity == null) {
            super.onRestoreInstanceState(savedInstanceState);
        }
    }

    @Override
    public void onSaveInstanceState(Bundle outState) {
        if (mProxyActivity == null) {
            super.onSaveInstanceState(outState);
        }
    }

    public void onNewIntent(Intent intent) {
        if (mProxyActivity == null) {
            super.onNewIntent(intent);
        }
    }

    @Override
    public void onResume() {
        if (mProxyActivity == null) {
            super.onResume();
        }
    }

    @Override
    public void onPostResume() {
        if (mProxyActivity == null) {
            super.onPostResume();
        }
    }

    @Override
    public void onPause() {
        if (mProxyActivity == null) {
            super.onPause();
        }
    }

    @Override
    public void onStop() {
        if (mProxyActivity == null) {
            super.onStop();
        }
    }

    @Override
    public void onDestroy() {
        if (mProxyActivity == null) {
            super.onDestroy();
        }
    }

    public boolean onTouchEvent(MotionEvent event) {
        if (mProxyActivity == null) {
            return super.onTouchEvent(event);
        }
        return false;
    }

    public boolean onKeyUp(int keyCode, KeyEvent event) {
        if (mProxyActivity == null) {
            return super.onKeyUp(keyCode, event);
        }
        return false;
    }

    public void onWindowAttributesChanged(WindowManager.LayoutParams params) {
        if (mProxyActivity == null) {
            super.onWindowAttributesChanged(params);
        }
    }

    public void onWindowFocusChanged(boolean hasFocus) {
        if (mProxyActivity == null) {
            super.onWindowFocusChanged(hasFocus);
        }
    }

    public boolean onCreateOptionsMenu(Menu menu) {
        if (mProxyActivity == null) {
            return super.onCreateOptionsMenu(menu);
        }
        return true;
    }

    public boolean onOptionsItemSelected(MenuItem item) {
        if (mProxyActivity == null) {
            return onOptionsItemSelected(item);
        }
        return false;
    }

    @Override
    public void unbindService(ServiceConnection conn) {
        if (mProxyActivity == null) {
            super.unbindService(conn);
            return;
        }
        mProxyActivity.unbindService(conn);
    }

    @Override
    public void startActivityForResult(Intent intent, int requestCode) {
        if (mProxyActivity == null) {
            super.startActivityForResult(intent, requestCode);
            return;
        }

        List<ResolveInfo> resolveInfos = mContext.getPackageManager().queryIntentActivities(intent,
                PackageManager.MATCH_DEFAULT_ONLY);
        if (resolveInfos != null && !resolveInfos.isEmpty()) {
            super.startActivityForResult(intent, requestCode);
        } else {
            intent.setPackage(mPluginPackage.mPackageName);
            PluginClientManager.sharedInstance(mContext).startActivityForResult(mContext, intent, requestCode);
        }
    }

    @Override
    public void startActivityForResult(Intent intent, int requestCode, Bundle options) {
        if (mProxyActivity == null) {
            super.startActivityForResult(intent, requestCode, options);
            return;
        }

        List<ResolveInfo> resolveInfos = mContext.getPackageManager().queryIntentActivities(intent,
                PackageManager.MATCH_DEFAULT_ONLY);
        if (resolveInfos != null && !resolveInfos.isEmpty()) {
            super.startActivityForResult(intent, requestCode, options);
        } else {
            intent.setPackage(mPluginPackage.mPackageName);
            PluginClientManager.sharedInstance(mContext).startActivityForResult(mContext, intent, requestCode,
                    options);
        }
    }

    @Override
    public void startActivity(Intent intent) {
        if (mProxyActivity == null) {
            super.startActivity(intent);
            return;
        }

        List<ResolveInfo> resolveInfos = mContext.getPackageManager().queryIntentActivities(intent,
                PackageManager.MATCH_DEFAULT_ONLY);
        if (resolveInfos != null && !resolveInfos.isEmpty()) {
            super.startActivity(intent);
        } else {
            intent.setPackage(mPluginPackage.mPackageName);
            PluginClientManager.sharedInstance(mContext).startActivity(mContext, intent);
        }
    }

    @Override
    public void startActivity(Intent intent, Bundle options) {
        if (mProxyActivity == null) {
            super.startActivity(intent, options);
            return;
        }

        List<ResolveInfo> resolveInfos = mContext.getPackageManager().queryIntentActivities(intent,
                PackageManager.MATCH_DEFAULT_ONLY);
        if (resolveInfos != null && !resolveInfos.isEmpty()) {
            super.startActivity(intent, options);
        } else {
            intent.setPackage(mPluginPackage.mPackageName);
            PluginClientManager.sharedInstance(mContext).startActivity(mContext, intent, options);
        }
    }

    @Override
    public ComponentName startService(Intent service) {
        if (mProxyActivity == null) {
            return super.startService(service);
        }
        List<ResolveInfo> resolveInfos = mContext.getPackageManager().queryIntentServices(service,
                PackageManager.MATCH_DEFAULT_ONLY);
        if (resolveInfos != null && !resolveInfos.isEmpty()) {
            return super.startService(service);
        } else {
            service.setPackage(mPluginPackage.mPackageName);
            return PluginClientManager.sharedInstance(mContext).startService(mContext, service);
        }
    }

    @Override
    public boolean stopService(Intent service) {
        if (mProxyActivity == null) {
            return super.stopService(service);
        }
        List<ResolveInfo> resolveInfos = mContext.getPackageManager().queryIntentServices(service,
                PackageManager.MATCH_DEFAULT_ONLY);
        if (resolveInfos != null && !resolveInfos.isEmpty()) {
            return super.stopService(service);
        } else {
            service.setPackage(mPluginPackage.mPackageName);
            return PluginClientManager.sharedInstance(mContext).stopService(mContext, service);
        }
    }

    @Override
    public boolean bindService(Intent service, ServiceConnection conn, int flags) {
        if (mProxyActivity == null) {
            return super.bindService(service, conn, flags);
        } else {
            return mProxyActivity.bindService(service, conn, flags);
        }
    }

    // ------------------------------------------------------------------------
    // methods override from FragmentActivity
    // ------------------------------------------------------------------------

    @Override
    public FragmentManager getSupportFragmentManager() {
        if (mProxyActivity == null) {
            return super.getSupportFragmentManager();
        }
        return mProxyActivity.getSupportFragmentManager();
    }

    @Override
    public LoaderManager getSupportLoaderManager() {
        if (mProxyActivity == null) {
            return super.getSupportLoaderManager();
        }
        return mProxyActivity.getSupportLoaderManager();
    }

    protected int getwindowSoftInputMode() {
        return WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN;
    }
}