导航菜单

页面标题

页面副标题

VIP-LODDER v3.3.1 - StartActivityManager.java 源代码

正在查看: VIP-LODDER v3.3.1 应用的 StartActivityManager.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package com.hjq.permissions;

import android.app.Activity;
import android.app.Fragment;
import android.content.Context;
import android.content.Intent;

final class StartActivityManager {
    private static final String SUB_INTENT_KEY = "sub_intent_key";

    private interface IStartActivityDelegate {
        void startActivity(Intent intent);

        void startActivityForResult(Intent intent, int i);
    }

    StartActivityManager() {
    }

    static Intent getSubIntentInMainIntent(Intent mainIntent) {
        if (AndroidVersion.isAndroid13()) {
            Intent subIntent = (Intent) mainIntent.getParcelableExtra(SUB_INTENT_KEY, Intent.class);
            return subIntent;
        }
        Intent subIntent2 = (Intent) mainIntent.getParcelableExtra(SUB_INTENT_KEY);
        return subIntent2;
    }

    static Intent getDeepSubIntent(Intent superIntent) {
        Intent subIntent = getSubIntentInMainIntent(superIntent);
        if (subIntent != null) {
            return getDeepSubIntent(subIntent);
        }
        return superIntent;
    }

    static Intent addSubIntentToMainIntent(Intent mainIntent, Intent subIntent) {
        if (mainIntent == null && subIntent != null) {
            return subIntent;
        }
        if (subIntent == null) {
            return mainIntent;
        }
        Intent deepSubIntent = getDeepSubIntent(mainIntent);
        deepSubIntent.putExtra(SUB_INTENT_KEY, subIntent);
        return mainIntent;
    }

    static boolean startActivity(Context context, Intent intent) {
        return startActivity(new StartActivityDelegateContextImpl(context), intent);
    }

    static boolean startActivity(Activity activity, Intent intent) {
        return startActivity(new StartActivityDelegateActivityImpl(activity), intent);
    }

    static boolean startActivity(Fragment fragment, Intent intent) {
        return startActivity(new StartActivityDelegateFragmentImpl(fragment), intent);
    }

    static boolean startActivity(androidx.fragment.app.Fragment fragment, Intent intent) {
        return startActivity(new StartActivityDelegateSupportFragmentImpl(fragment), intent);
    }

    static boolean startActivity(IStartActivityDelegate delegate, Intent intent) {
        try {
            delegate.startActivity(intent);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            Intent subIntent = getSubIntentInMainIntent(intent);
            if (subIntent == null) {
                return false;
            }
            return startActivity(delegate, subIntent);
        }
    }

    static boolean startActivityForResult(Activity activity, Intent intent, int requestCode) {
        return startActivityForResult(new StartActivityDelegateActivityImpl(activity), intent, requestCode);
    }

    static boolean startActivityForResult(Fragment fragment, Intent intent, int requestCode) {
        return startActivityForResult(new StartActivityDelegateFragmentImpl(fragment), intent, requestCode);
    }

    static boolean startActivityForResult(androidx.fragment.app.Fragment fragment, Intent intent, int requestCode) {
        return startActivityForResult(new StartActivityDelegateSupportFragmentImpl(fragment), intent, requestCode);
    }

    static boolean startActivityForResult(IStartActivityDelegate delegate, Intent intent, int requestCode) {
        try {
            delegate.startActivityForResult(intent, requestCode);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            Intent subIntent = getSubIntentInMainIntent(intent);
            if (subIntent == null) {
                return false;
            }
            return startActivityForResult(delegate, subIntent, requestCode);
        }
    }

    private static class StartActivityDelegateContextImpl implements IStartActivityDelegate {
        private final Context mContext;

        private StartActivityDelegateContextImpl(Context context) {
            this.mContext = context;
        }

        @Override
        public void startActivity(Intent intent) {
            this.mContext.startActivity(intent);
        }

        @Override
        public void startActivityForResult(Intent intent, int requestCode) {
            Activity activity = PermissionUtils.findActivity(this.mContext);
            if (activity != null) {
                activity.startActivityForResult(intent, requestCode);
            } else {
                startActivity(intent);
            }
        }
    }

    private static class StartActivityDelegateActivityImpl implements IStartActivityDelegate {
        private final Activity mActivity;

        private StartActivityDelegateActivityImpl(Activity activity) {
            this.mActivity = activity;
        }

        @Override
        public void startActivity(Intent intent) {
            this.mActivity.startActivity(intent);
        }

        @Override
        public void startActivityForResult(Intent intent, int requestCode) {
            this.mActivity.startActivityForResult(intent, requestCode);
        }
    }

    private static class StartActivityDelegateFragmentImpl implements IStartActivityDelegate {
        private final Fragment mFragment;

        private StartActivityDelegateFragmentImpl(Fragment fragment) {
            this.mFragment = fragment;
        }

        @Override
        public void startActivity(Intent intent) {
            this.mFragment.startActivity(intent);
        }

        @Override
        public void startActivityForResult(Intent intent, int requestCode) {
            this.mFragment.startActivityForResult(intent, requestCode);
        }
    }

    private static class StartActivityDelegateSupportFragmentImpl implements IStartActivityDelegate {
        private final androidx.fragment.app.Fragment mFragment;

        private StartActivityDelegateSupportFragmentImpl(androidx.fragment.app.Fragment fragment) {
            this.mFragment = fragment;
        }

        @Override
        public void startActivity(Intent intent) {
            this.mFragment.startActivity(intent);
        }

        @Override
        public void startActivityForResult(Intent intent, int requestCode) {
            this.mFragment.startActivityForResult(intent, requestCode);
        }
    }
}