package com.demo.app.ui;
import android.Manifest;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.view.ViewGroup;
import com.demo.app.MyApplication;
import com.demo.app.R;
import com.demo.app.ui.dialog.PermissionAuthNotifyDialog;
import com.demo.app.ui.dialog.UserProtocolDialog;
import com.demo.app.utils.AppConfigUtil;
import com.demo.app.utils.Constant;
import com.demo.app.utils.UserUtil;
import com.demo.app.utils.api.BasicTextHttpResponseHandler;
import com.demo.app.utils.api.HttpApiUtil;
import com.demo.library_ad.AdUtil;
import com.demo.library_ad.SplashAdUtil;
import com.demo.lib.common.util.PermissionsChecker;
import org.apache.http.Header;
import org.json.JSONObject;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
public class SplashActivity extends AppCompatActivity {
private static final String TAG = "SplashActivity";
private ViewGroup vg_ad;
// 所需的全部权限
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);
vg_ad = findViewById(R.id.fl_splash_ad);
// Glide.with(getApplicationContext()).load(R.drawable.ic_launcher).transform(new GlideRoundTransform(getApplicationContext(), 5)).into(iv_logo);
SharedPreferences preferences = getSharedPreferences("link_page",
Context.MODE_PRIVATE);
mPermissionsChecker = new PermissionsChecker(this);
if (!UserUtil.isAgreeUserProtocol(getApplicationContext()) && !Constant.DEBUG) {
showProtocol();
} else {
vg_ad.post(new Runnable() {
@Override
public void run() {
requetPermission();
}
});
}
}
private void showProtocol() {
String data = "尊敬的用户:
感谢您对" + getResources().getString(R.string.app_name) + "一直以来的信任!
";
data += "我们非常尊重并保护您的个人信息、隐私。为了更好的保障您的权利,在您使用我们的产品之前,请您务必审慎阅读";
data += String.format("《隐私政策》和", Constant.PRIVACY_POLICY);
data += String.format("《用户协议》", Constant.USER_AGREEMENT);
data += "内的所有条款,尤其是:
" +
"1、我们对您的个人信息(包括但不限于设备MAC地址、IMEI/Android ID等信息)的收集/保存/使用/对外提供/保护等规则条款,以及您的用户权利等条款;
" +
"2、约定我们的限制责任、免责条款;
" +
"3、其他以加粗或斜体字进行标识的重要条款。
" +
"如您对协议有任何疑虑,可通过电子邮箱: xcwapp@qq.com 向我们询问,我们将为您竭诚解答。您点击“同意”的行为代表您已阅读完毕并接受以上协议全部条款。如您同意以上协议内容,请您点击“同意”,开始使用您的产品。";
if (!UserUtil.isAgreeUserProtocol(getApplicationContext()) && !Constant.DEBUG) {
new UserProtocolDialog.Builder(SplashActivity.this).setNegativeButton("不同意", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
}).setPositiveButton("同意", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
UserUtil.agreeUserProtocol(getApplicationContext());
//请求权限
vg_ad.post(new Runnable() {
@Override
public void run() {
new PermissionAuthNotifyDialog.Builder(SplashActivity.this).setPositiveButton(null, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
requetPermission();
}
}).create().show();
}
});
}
}).setData(data).create().show();
}
}
private void requetPermission() {
SharedPreferences sharedPreferences = getSharedPreferences("permission", Context.MODE_PRIVATE);
boolean showPermission = sharedPreferences.getBoolean("show", true);
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) != PERMISSION_GRANTED && showPermission) {
ActivityCompat.requestPermissions(this, PERMISSIONS, REQUEST_CODE);
} else {
MyApplication.init(MyApplication.application, new MyApplication.InitListener() {
@Override
public void onFinish() {
}
});
int delayMs = 1;
vg_ad.postDelayed(new Runnable() {
@Override
public void run() {
HttpApiUtil.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");
//浏览器外跳协议
AppConfigUtil.saveBrowserJumpOutProtocolPrefix(getApplicationContext(), data.optString("jumpAppProtocolPrefix"));
//保存联系客服,注销链接
AppConfigUtil.saveConcatUsLink(getApplicationContext(), data.optString("contactUsLink"));
AppConfigUtil.saveUnRegisterLink(getApplicationContext(), data.optString("unRegisterLink"));
AdUtil.saveAdConfig(getApplicationContext(), ad);
MyApplication.initAd(MyApplication.application, new MyApplication.InitListener() {
@Override
public void onFinish() {
runOnUiThread(new Runnable() {
@Override
public void run() {
loadSplashAd();
}
});
}
});
return;
}
}
loadSplashAd();
}
@Override
public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {
super.onFailure(statusCode, headers, responseString, throwable);
loadSplashAd();
}
});
}
}, delayMs);
}
}
/**
* 加载开屏广告
*/
private void loadSplashAd() {
AdUtil.AD_TYPE splashType = AdUtil.getAdType(getApplicationContext(), "");
if (splashType == null) {
vg_ad.postDelayed(new Runnable() {
@Override
public void run() {
toMainActivity();
}
}, 2000);
return;
}
String csjPid = getString(R.string.ad_csj_pid_splash);
String gdtPid = getString(R.string.ad_gdt_pid_splash);
SplashAdUtil.loadAD(splashType, splashType == AdUtil.AD_TYPE.csj ? csjPid : gdtPid, SplashActivity.this, vg_ad, new SplashAdUtil.SplashAdListener() {
@Override
public void close() {
runOnUiThread(new Runnable() {
@Override
public void run() {
toMainActivity();
}
});
}
@Override
public void noAd() {//初次加载未加载出广告
if (AdUtil.AD_TYPE.csj == splashType) {
//再次加载广点通广告
SplashAdUtil.loadAD(AdUtil.AD_TYPE.gdt, gdtPid, SplashActivity.this, vg_ad, 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 == splashType) {
//再次加载穿山甲广告
SplashAdUtil.loadAD(AdUtil.AD_TYPE.csj, csjPid, SplashActivity.this, vg_ad, 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 boolean isFinish;
private void toMainActivity() {
if (!isFinish) {
isFinish = true;
Intent intent = new Intent(SplashActivity.this, MainActivity.class);
startActivity(intent);
finish();
}
}
}