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.graphics.Bitmap; import android.graphics.drawable.Drawable; 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.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; import com.google.gson.Gson; import com.lcjian.library.util.ScreenUtils; import com.lcjian.library.util.common.BitmapUtils; import com.lcjian.library.util.common.DrawableUtils; import com.lcjian.library.util.common.StringUtils; import com.lcjian.library.util.glide.GlideRoundTransform; 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.AdPidInfo; import com.weikou.beibeivideo.entity.ad.AdPositionEnum; import com.weikou.beibeivideo.entity.ad.AdTypeVO; import com.weikou.beibeivideo.entity.ad.SplashAdLoadInfo; import com.weikou.beibeivideo.ui.ad.SplashADFragment; import com.weikou.beibeivideo.ui.dialog.UserProtocolDialog; import com.weikou.beibeivideo.ui.main.MainActivity; import com.weikou.beibeivideo.util.BeibeiConstant; import com.weikou.beibeivideo.util.ConfigUtil; import com.weikou.beibeivideo.util.PermissionsChecker; import com.weikou.beibeivideo.util.SDCardUtil; import com.weikou.beibeivideo.util.UserUtil; 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 com.weikou.beibeivideo.util.ui.TopStatusSettings; 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 { boolean isInput = false; private ViewGroup vg_ad; private ViewGroup vg_input; private ImageView iv_bg; private TextView ad_close_time; private static String TAG = "SplashActivity"; // 所需的全部权限 static final String[] PERMISSIONS = new String[]{ Manifest.permission.READ_PHONE_STATE }; private static final int REQUEST_CODE = 0; // 请求码 private PermissionsChecker mPermissionsChecker; // 权限检测器 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // if (!this.isTaskRoot()) {// 判断本activity是不是任务空间的源activity,false就是不是系统重新实例化出来的 // finish(); // return; // } setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); setContentView(R.layout.activity_splash); TopStatusSettings.setStatusViewAndDeepColor(this); 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_bg = findViewById(R.id.iv_bg); SharedPreferences preferences = getSharedPreferences("link_page", Context.MODE_PRIVATE); isInput = preferences.getBoolean("isInput", false); try { TelephonyManager manager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE); Build bd = new Build(); String model = bd.MODEL; BeibeiVideoApplication.deviceName = model; BeibeiVideoApplication.deviceNumber = manager.getDeviceId(); } catch (Exception e) { } mPermissionsChecker = new PermissionsChecker(this); // 初始化大设备 SDCardUtil.initStorage(this); //初始化一次Banner,否则后面Banner使用时会出现卡顿 // new BannerView(SplashActivity.this, ADSize.BANNER, BeibeiConstant.GDT_ID, BeibeiConstant.GDT_PLAYER_DETAIL); //弹用户协议框 showProtocol(); //设置背景图片 Drawable drawable = getResources().getDrawable(R.drawable.ic_splash_bg); Bitmap bitmap = DrawableUtils.drawableToBitmap(drawable); int width = ScreenUtils.getScreenWidth(this); float scaleRate = width * 1.0f / bitmap.getWidth(); Bitmap bitmap1 = BitmapUtils.scaleImage(bitmap, scaleRate, scaleRate); iv_bg.setImageBitmap(bitmap1); } private void showProtocol() { String data = "感谢您对" + getResources().getString(R.string.app_name) + "一直以来的信任!
"; data += "我们依照新的监管要求条例更新了"; data += String.format("《隐私政策》和", BeibeiConstant.PRIVACY_POLICY); data += String.format("《用户协议》", BeibeiConstant.USER_AGREEMENT); data += "为采取相应安全保护措施,尽力保护您的个人信息安全可控,特向你说明如下:
" + "1、您在使用" + getResources().getString(R.string.app_name) + "各项产品或服务时,将会提供与具体功能相关的个人信息(可能涉及帐号、位置、存储等信息)。
" + "2、您可以随时查询、更正、删除您的个人信息,我们也提供账户注销的渠道。
" + "3、未经您的再次同意,我们不会将上述信息用于您未授权的其他用途或目的。
" + "4、未经监护人同意,我们不会收集使用14周岁以下(含14周岁)未成年人个人信息,且不会利用其信息推送新闻、时政信息、广告等定向推送活动。"; if (!UserUtil.isAgreeUserProtocol(BeibeiVideoApplication.application) && !BeibeiConstant.IS_TEST) { Dialog dialog = new UserProtocolDialog.Builder(this).setNegativeButton("不同意", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { SplashActivity.this.finish(); } }).setPositiveButton("同意并继续", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); UserUtil.agreeUserProtocol(BeibeiVideoApplication.application); //请求权限 vg_ad.post(new Runnable() { @Override public void run() { myRequetPermission(); } }); } }).setData(data).create(); if (!isFinishing()) { dialog.show(); } } else { //请求权限 vg_ad.post(new Runnable() { @Override public void run() { myRequetPermission(); } }); } } @Override public void onResume() { super.onResume(); } private void getUid() { final SharedPreferences preferences = getSharedPreferences("user", Context.MODE_PRIVATE); String channel = ""; try { channel = getChannel(); } catch (PackageManager.NameNotFoundException e1) { e1.printStackTrace(); } BeibeiVideoAPI.getUid(this, channel, BeibeiVideoAPI.getDeviceId(this), preferences.getString("imei", ""), preferences.getString("mac", ""), "", "", new BasicTextHttpResponseHandler() { @Override public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception { if (jsonObject.getBoolean("IsPost")) { JSONObject data = jsonObject.getJSONObject("Data"); String pptvso1 = data.optJSONArray("PPTVSO").optString(0); String pptvso2 = data.optJSONArray("PPTVSO").optString(1); preferences.edit() .putString( "uid", data .optString("Uid")) .putString("pptvso1", pptvso1) .putString("pptvso2", pptvso2) .putString("COMMENT_ALERT", data .optString("COMMENT_ALERT")) .putInt("ShowAd", Integer.parseInt(data .optString("ShowAd"))) .putString( "share_url", data .optString("ShareUrl")) .putString( "shopurl", data .optString("shopurl")) .putString( "share_content", data .optString("ShareContent")) .putString( "share_url_wechat", data .optString("WXShareUrl")) .putString( "share_content_wechat", data .optString("WXShareContent")) .putString( "show_more_app", data .optString("ShowMoreApp")) .putString( "evalueate", data .optString("evalueate")) .putString( "share_image_wechat", data .optString("WXShareIcon")) // .putString( // "show_ad", // jsonObject.optJSONObject("Data") // .optString("ShowAd")) .putString( "tuiguang_add", data .optString("TuiGuang")) .putString( "top_icon", data .optString("TopIcon")) .putString( "zixun", data .optString("ZiXun")) .commit(); BeibeiVideoAPI.ERROR_NOTICE = data.optString( "NoticeContent"); BeibeiConstant.AD_CLICK_DOWNLOAD = data .optBoolean("adClickDownload"); if (BeibeiConstant.AD_CLICK_DOWNLOAD) { BeibeiConstant.GDT_RECOMMAND_MIN_NATIVE = BeibeiConstant.GDT_DOWNLOAD_HINT_ID; BeibeiConstant.GDT_RECOMMAND_NATIVE = BeibeiConstant.GDT_DOWNLOAD_HINT_ID; BeibeiConstant.GDT_RECOMMEND_CATEGORY_MIN_NATIVE = BeibeiConstant.GDT_DOWNLOAD_HINT_ID; BeibeiConstant.GDT_PLAYER_NATIVE1 = BeibeiConstant.GDT_DOWNLOAD_HINT_ID; 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_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; GDTConstant.PID_2_VIDEO_DETAIL_PLAYER_PRE_PPTV = BeibeiConstant.GDT_DOWNLOAD_HINT_ID; CSJConstant.RECOMMEND_BIG_IMG_AD = CSJConstant.INVALID_AD; } //获取广告 String adType = data.optString("adType"); if (!com.weikou.beibeivideo.util.downutil.StringUtils.isNullOrEmpty(adType)) { AdTypeVO ad = new Gson().fromJson(adType, AdTypeVO.class); if (ad != null) BeibeiConstant.AD_TYPE = ad; } new AddAliasTask(data .getString("Uid"), "WEIKOU"); SharedPreferences preferences1 = getSharedPreferences("user", Context.MODE_PRIVATE); boolean isLogin = StringUtils.isEmpty(preferences1.getString("LoginUid", "")) ? false : true; if (isLogin) { getNewInfo(); } } } @Override public void onStart() { super.onStart(); } @Override public void onFinish() { super.onFinish(); } }); } class AddAliasTask extends AsyncTask { String alias; String aliasType; public AddAliasTask(String aliasString, String aliasTypeString) { this.alias = aliasString; this.aliasType = aliasTypeString; } protected Boolean doInBackground(Void... params) { try { // return mPushAgent.addAlias(alias, aliasType); } catch (Exception e) { e.printStackTrace(); } return false; } } private String getChannel() throws PackageManager.NameNotFoundException { return "360"; } /** * 判断此用户是否有新消息 */ private void getNewInfo() { SharedPreferences preferences = getSharedPreferences("user", Context.MODE_PRIVATE); if (StringUtils.isEmpty(preferences.getString("LoginUid", ""))) { return; } BeibeiVideoAPI.getReadState(SplashActivity.this, preferences.getString("LoginUid", ""), new BasicTextHttpResponseHandler() { @Override public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception { if (jsonObject.optBoolean("IsPost")) { boolean isCheck = jsonObject.optJSONObject("Data") .optBoolean("Read"); SharedPreferences preferences = getSharedPreferences( "user", Context.MODE_PRIVATE); SharedPreferences.Editor editor = preferences.edit(); editor.putBoolean("isCheckedCom", isCheck); editor.commit(); } } }); } @Override public void onPause() { super.onPause(); } private String getDay(long time) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); String date = format.format(new Date(time)); return date; } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) return false; else return super.onKeyDown(keyCode, event); } @Override protected void onDestroy() { super.onDestroy(); } boolean isFinish = false; private void toMainActivity() { if (!isFinish) { isFinish = true; Intent intent = new Intent(SplashActivity.this, MainActivity.class); startActivity(intent); finish(); } } /** * 加载开屏广告 * * @param adType */ private SplashADFragment splashADFragment; private void loadSplashAd(AdUtil.AD_TYPE adType, String pid) { AdPidInfo adPidInfo2 = null; if (adType == AdUtil.AD_TYPE.gdt) { adPidInfo2 = new AdPidInfo(AdUtil.AD_TYPE.csj, CSJConstant.SPLASH_AD); } else { adPidInfo2 = new AdPidInfo(AdUtil.AD_TYPE.gdt, BeibeiConstant.GDT_SPLASH_POSITION_ID); } splashADFragment = SplashADFragment.newInstance(new AdPidInfo(adType, pid), adPidInfo2); splashADFragment.setAdShowListener(new SplashADFragment.AdShowListener() { @Override public void onClose() { toMainActivity(); } }); //直接加载广告 getSupportFragmentManager().beginTransaction().replace(R.id.fl_splash_ad, splashADFragment).commitAllowingStateLoss(); } 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(); 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("adNew"); String vipLink = data.optString("vipLink"); int pptvNoAdRewardHour = data.optInt("pptvNoAdRewardHour", 3); //网页加速域名 String webSpeedUpHost = data.optString("webSpeedUpHost"); ConfigUtil.saveWebSpeedUpHost(getApplicationContext(), webSpeedUpHost); //设置我的页面banner ConfigUtil.saveMinePageBanner(getApplicationContext(), data.optString("minePageBanner")); ConfigUtil.savePlayerJumpOutProtocolPrefix(getApplicationContext(), data.optString("jumpAppProtocolPrefix")); //保存免广告权益持续时间 AdUtil.setPPTVNoAdRewardHour(getApplicationContext(), pptvNoAdRewardHour); AdUtil.saveAdConfig(getApplicationContext(), ad); AdUtil.AD_TYPE splash = AdUtil.getAdType(getApplicationContext(), AdPositionEnum.splash); String pid = AdUtil.getAdPid(getApplicationContext(), AdPositionEnum.splash); if (StringUtils.isBlank(pid)) { if (splash != null) { if (splash == AdUtil.AD_TYPE.csj) { pid = CSJConstant.SPLASH_AD; } else if (splash == AdUtil.AD_TYPE.gdt) { pid = BeibeiConstant.GDT_SPLASH_POSITION_ID; } } } ConfigUtil.saveVipLink(getApplicationContext(), vipLink); loadSplashAd(splash, pid); } } else { loadSplashAd(AdUtil.AD_TYPE.csj, CSJConstant.SPLASH_AD); } } @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.csj, CSJConstant.SPLASH_AD); } }); } }, 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();//由于不知道是否选择了允许所以需要再次判断 } } }