admin
2020-10-10 8039a1b2fbfa3471b6f726d3e839d7867c81a84f
BuWanVideo/src/com/weikou/beibeivideo/ui/SplashActivity.java
@@ -1,46 +1,56 @@
package com.weikou.beibeivideo.ui;
import android.Manifest;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.telephony.TelephonyManager;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.google.gson.Gson;
import com.lcjian.library.util.common.StringUtils;
import com.qq.e.ads.splash.SplashAD;
import com.qq.e.ads.splash.SplashADListener;
import com.qq.e.comm.util.AdError;
import com.tencent.smtt.sdk.WebView;
import com.umeng.analytics.MobclickAgent;
import com.weikou.beibeivideo.BasicTextHttpResponseHandler;
import com.weikou.beibeivideo.BeibeiVideoAPI;
import com.weikou.beibeivideo.BeibeiVideoApplication;
import com.weikou.beibeivideo.R;
import com.weikou.beibeivideo.entity.ad.AdTypeVO;
import com.weikou.beibeivideo.ui.main.MainActivity;
import com.weikou.beibeivideo.util.BeibeiConstant;
import com.weikou.beibeivideo.util.PermissionHintDialog;
import com.weikou.beibeivideo.util.PermissionsActivity;
import com.weikou.beibeivideo.util.GlideRoundTransform;
import com.weikou.beibeivideo.util.PermissionsChecker;
import com.weikou.beibeivideo.util.SDCardUtil;
import com.yeshi.buwanshequ.R;
import com.weikou.beibeivideo.util.ad.AdUtil;
import com.weikou.beibeivideo.util.ad.CSJConstant;
import com.weikou.beibeivideo.util.ad.GDTConstant;
import com.weikou.beibeivideo.util.ad.SplashAdUtil;
import org.apache.http.Header;
import org.json.JSONObject;
import java.text.SimpleDateFormat;
import java.util.Date;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
public class SplashActivity extends BaseActivity {
@@ -51,10 +61,13 @@
    private TextView ad_close_time;
    private ImageView iv_logo;
    private static String TAG = "SplashActivity";
    // 所需的全部权限
    static final String[] PERMISSIONS = new String[]{
            Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.WRITE_EXTERNAL_STORAGE
            Manifest.permission.READ_PHONE_STATE
    };
    private static final int REQUEST_CODE = 0; // 请求码
    private PermissionsChecker mPermissionsChecker; // 权限检测器
@@ -68,7 +81,6 @@
        }
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        setContentView(R.layout.activity_splash);
        /*
         * 计算状态栏高度并设置
@@ -87,10 +99,12 @@
            findViewById(R.id.v_status_bar).setVisibility(View.GONE);
        }
        vg_ad = (ViewGroup) findViewById(R.id.fl_splash_ad);
        vg_input = (ViewGroup) findViewById(R.id.fl_input);
        ad_close_time = (TextView) findViewById(R.id.ad_close_time);
        vg_ad = findViewById(R.id.fl_splash_ad);
        vg_input = findViewById(R.id.fl_input);
        ad_close_time = findViewById(R.id.ad_close_time);
        iv_logo = findViewById(R.id.iv_logo);
        Glide.with(getApplicationContext()).load(R.drawable.ic_launcher).transform(new GlideRoundTransform(getApplicationContext(), 5)).into(iv_logo);
        SharedPreferences preferences = getSharedPreferences("link_page",
                Context.MODE_PRIVATE);
@@ -109,6 +123,14 @@
        SDCardUtil.initStorage(this);
        //初始化一次Banner,否则后面Banner使用时会出现卡顿
//        new BannerView(SplashActivity.this, ADSize.BANNER, BeibeiConstant.GDT_ID, BeibeiConstant.GDT_PLAYER_DETAIL);
        vg_ad.post(new Runnable() {
            @Override
            public void run() {
                myRequetPermission();
            }
        });
    }
@@ -116,92 +138,7 @@
    public void onResume() {
        super.onResume();
        MobclickAgent.onPageStart("欢迎页");
        if (mPermissionsChecker.lacksPermissions(PERMISSIONS)) {
//            PermissionHintDialog.Builder builder = new PermissionHintDialog.Builder(this);
//            builder.setMessage("为保障正常使用相关功能,请允许影视大全获取相关基础权限").setPositiveButton("我知道啦", new DialogInterface.OnClickListener() {
//                @Override
//                public void onClick(DialogInterface dialogInterface, int i) {
                    startPermissionsActivity();
//                    dialogInterface.dismiss();
//                }
//            }).create().show();
        } else {
            getUid();
            new WebView(this);
            vg_ad.postDelayed(new Runnable() {
                @Override
                public void run() {
                    if (!BeibeiConstant.AD_SETTING_KAIPIN)
                        toMainActivity();
                    new SplashAD(SplashActivity.this, vg_input, BeibeiConstant.GDT_SPLASH_POSITION_ID_HUAWEI2, new SplashADListener() {
                        @Override
                        public void onADDismissed() {
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    toMainActivity();
                                }
                            });
                        }
                        @Override
                        public void onNoAD(AdError adError) {
                            final String msg=adError.getErrorMsg();
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    toMainActivity();
                                }
                            });
                        }
                        @Override
                        public void onADPresent() {
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    vg_input.setVisibility(View.VISIBLE);
                                }
                            });
                        }
                        @Override
                        public void onADClicked() {
                            System.out.println("");
                        }
                        @Override
                        public void onADTick(final long l) {
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    ad_close_time.setText(l / 1000 + "");
                                }
                            });
                        }
                        @Override
                        public void onADExposure() {
                            System.out.println("");
                        }
                        @Override
                        public void onADLoaded(long l) {
                            System.out.println("");
                        }
                    }, 0).fetchAndShowIn(vg_ad);
                }
            }, 1000);
        }
    }
    private void startPermissionsActivity() {
        PermissionsActivity.startActivityForResult(this, REQUEST_CODE, PERMISSIONS);
    }
    private void getUid() {
        final SharedPreferences preferences = getSharedPreferences("user",
@@ -301,10 +238,17 @@
                                BeibeiConstant.GDT_DISCOVER_NATIVE = BeibeiConstant.GDT_DOWNLOAD_HINT_ID;
                                BeibeiConstant.GDT_GUESS_LIKE_NATIVE = BeibeiConstant.GDT_DOWNLOAD_HINT_ID;
                                BeibeiConstant.GDT_RECOMMEND_CATEGORY_NATIVE = BeibeiConstant.GDT_DOWNLOAD_HINT_ID;
                                BeibeiConstant.GDT_EXIT_DIALOG = BeibeiConstant.GDT_DOWNLOAD_HINT_ID;
                                BeibeiConstant.GDT_SEARCH_RESULT_MIN_NATIVE = BeibeiConstant.GDT_DOWNLOAD_HINT_ID;
                                BeibeiConstant.GDT_PLAYER_DETAIL = BeibeiConstant.GDT_DOWNLOAD_HINT_ID;
                                BeibeiConstant.GDT_CATEGORY_BANNER = BeibeiConstant.GDT_DOWNLOAD_HINT_ID;
                                GDTConstant.PID_HOME_RECOMMEND_BIG_IMG = BeibeiConstant.GDT_DOWNLOAD_HINT_ID;
                                GDTConstant.PID_2_VIDEO_DETAIL_PLAY_EXPRESS1 = BeibeiConstant.GDT_DOWNLOAD_HINT_ID;
                                GDTConstant.PID_2_VIDEO_DETAIL_PLAY_EXPRESS2 = BeibeiConstant.GDT_DOWNLOAD_HINT_ID;
                                GDTConstant.PID_2_VIDEO_LIST_SMALL_AD_COLUMN3 = BeibeiConstant.GDT_DOWNLOAD_HINT_ID;
                                GDTConstant.PID_2_VIDEO_LIST_SMALL_AD_COLUMN2 = BeibeiConstant.GDT_DOWNLOAD_HINT_ID;
                                GDTConstant.PID_HOME_RECOMMEND_BIG_IMG = BeibeiConstant.GDT_DOWNLOAD_HINT_ID;
                                CSJConstant.RECOMMEND_BIG_IMG_AD = CSJConstant.INVALID_AD;
                            }
                            //获取广告
@@ -431,5 +375,196 @@
            finish();
        }
    }
    /**
     * 加载开屏广告
     *
     * @param adType
     */
    private void loadSplashAd(final AdUtil.AD_TYPE adType) {
        SplashAdUtil.loadAD(adType, SplashActivity.this, vg_input, vg_ad, ad_close_time, new SplashAdUtil.SplashAdListener() {
            @Override
            public void close() {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        toMainActivity();
                    }
                });
            }
            @Override
            public void noAd() {//初次加载未加载出广告
                if (AdUtil.AD_TYPE.csj == adType) {
                    //再次加载广点通广告
                    SplashAdUtil.loadAD(AdUtil.AD_TYPE.gdt, SplashActivity.this, vg_input, vg_ad, ad_close_time, new SplashAdUtil.SplashAdListener() {
                        @Override
                        public void close() {
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    toMainActivity();
                                }
                            });
                        }
                        @Override
                        public void noAd() {
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    toMainActivity();
                                }
                            });
                        }
                    });
                } else if (AdUtil.AD_TYPE.gdt == adType) {
                    //再次加载穿山甲广告
                    //再次加载广点通广告
                    SplashAdUtil.loadAD(AdUtil.AD_TYPE.csj, SplashActivity.this, vg_input, vg_ad, ad_close_time, new SplashAdUtil.SplashAdListener() {
                        @Override
                        public void close() {
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    toMainActivity();
                                }
                            });
                        }
                        @Override
                        public void noAd() {
                            runOnUiThread(new Runnable() {
                                @Override
                                public void run() {
                                    toMainActivity();
                                }
                            });
                        }
                    });
                } else {
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            toMainActivity();
                        }
                    });
                }
            }
        });
    }
    private void myRequetPermission() {
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_CODE);
        } else {
            //百度内容联盟
//            MobadsPermissionSettings.setPermissionReadDeviceID(true);
            getUid();
            new WebView(this);
            vg_ad.postDelayed(new Runnable() {
                @Override
                public void run() {
                    if (!BeibeiConstant.AD_SETTING_KAIPIN)
                        toMainActivity();
                    BeibeiVideoAPI.getConfig(getApplicationContext(), new BasicTextHttpResponseHandler() {
                        @Override
                        public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
                            if (jsonObject != null) {
                                if (jsonObject.getBoolean("IsPost")) {
                                    JSONObject data = jsonObject.getJSONObject("Data");
                                    JSONObject ad = data.optJSONObject("ad");
                                    AdUtil.saveAdConfig(getApplicationContext(), ad);
                                    AdUtil.AD_TYPE splash = AdUtil.getAdType(getApplicationContext(), AdUtil.POSITION_SPLASH);
                                    loadSplashAd(splash);
                                }
                            } else {
                                loadSplashAd(AdUtil.AD_TYPE.gdt);
                            }
                        }
                        @Override
                        public void onSuccess(int statusCode, Header[] headers, String responseString) {
                            super.onSuccess(statusCode, headers, responseString);
                        }
                        @Override
                        public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
                            super.onFailure(statusCode, headers, responseString, throwable);
                            loadSplashAd(AdUtil.AD_TYPE.gdt);
                        }
                    });
                }
            }, 1000);
        }
    }
    Dialog mDialog;
    AlertDialog alertDialog;
    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode == REQUEST_CODE) {
            for (int i = 0; i < permissions.length; i++) {
                if (grantResults[i] == PERMISSION_GRANTED) {//选择了“始终允许”
                    myRequetPermission();
                } else {
                    if (!ActivityCompat.shouldShowRequestPermissionRationale(this, permissions[i])) {//用户选择了禁止不再询问
                        AlertDialog.Builder builder = new AlertDialog.Builder(SplashActivity.this);
                        builder.setTitle("权限请求")
                                .setMessage("当前应用缺少必要的权限\n请点击设置-权限 打开电话和存储权限,以正常使用APP的功能")
                                .setPositiveButton("去设置", new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int id) {
                                        if (mDialog != null && mDialog.isShowing()) {
                                            mDialog.dismiss();
                                        }
                                        Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
                                        Uri uri = Uri.fromParts("package", getPackageName(), null);//注意就是"package",不用改成自己的包名
                                        intent.setData(uri);
                                        startActivityForResult(intent, REQUEST_CODE);
                                    }
                                });
                        mDialog = builder.create();
                        mDialog.setCanceledOnTouchOutside(false);
                        mDialog.show();
                    } else {//选择禁止
                        AlertDialog.Builder builder = new AlertDialog.Builder(this);
                        builder.setTitle("权限请求")
                                .setMessage("点击允许才可以使用哦")
                                .setPositiveButton("去允许", new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int id) {
                                        if (alertDialog != null && alertDialog.isShowing()) {
                                            alertDialog.dismiss();
                                        }
                                        ActivityCompat.requestPermissions(SplashActivity.this,
                                                new String[]{Manifest.permission.READ_PHONE_STATE}, REQUEST_CODE);
                                    }
                                });
                        alertDialog = builder.create();
                        alertDialog.setCanceledOnTouchOutside(false);
                        alertDialog.show();
                    }
                }
            }
        }
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQUEST_CODE) {
            myRequetPermission();//由于不知道是否选择了允许所以需要再次判断
        }
    }
}