package cn.flightfeather.thirdapp.activity;
|
|
import android.Manifest;
|
import android.annotation.SuppressLint;
|
import android.content.Context;
|
import android.content.DialogInterface;
|
import android.content.Intent;
|
import android.content.pm.PackageManager;
|
import android.net.Uri;
|
import android.os.Build;
|
import android.os.Handler;
|
import android.os.Message;
|
import android.support.annotation.NonNull;
|
import android.support.v7.app.AlertDialog;
|
import android.support.v7.app.AppCompatActivity;
|
import android.os.Bundle;
|
|
import cn.flightfeather.thirdapp.R;
|
import cn.flightfeather.thirdapp.common.database.DbFactory;
|
import cn.flightfeather.thirdapp.CommonApplication;
|
import cn.flightfeather.thirdapp.task.InitDataTask;
|
|
public class SplashActivity extends AppCompatActivity {
|
//权限相关
|
private boolean hasDeniedPermisson = false;
|
private final int REQUSET_PERMISSIONS = 50;
|
private final String[] permissonLIst = {
|
Manifest.permission.WRITE_EXTERNAL_STORAGE,
|
Manifest.permission.CAMERA,
|
Manifest.permission.ACCESS_COARSE_LOCATION,
|
Manifest.permission.ACCESS_FINE_LOCATION,
|
Manifest.permission.CALL_PHONE};
|
private CommonApplication application;
|
public static final int SHOW_ERROR = 1;
|
public static final int START_LOGIN = 2;
|
@SuppressLint("HandlerLeak")
|
private Handler handler = new Handler(){
|
@Override
|
public void handleMessage(Message msg) {
|
super.handleMessage(msg);
|
switch (msg.what){
|
case SHOW_ERROR:
|
showNetErrorDialog();
|
break;
|
case START_LOGIN:
|
startLogin();
|
break;
|
}
|
}
|
};
|
|
|
@Override
|
protected void onCreate(Bundle savedInstanceState) {
|
super.onCreate(savedInstanceState);
|
setContentView(R.layout.activity_splash);
|
application = (CommonApplication) getApplication();
|
showPermissionDialog();
|
}
|
|
private void showPermissionDialog(){
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
requestPermissions(permissonLIst,REQUSET_PERMISSIONS);
|
}
|
}
|
//
|
private void showNetErrorDialog(){
|
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
|
dialog.setTitle("连接失败");
|
dialog.setMessage("请检查网络并退出重试");
|
dialog.setCancelable(false);
|
dialog.setPositiveButton("退出", new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialogInterface, int i) {
|
finish();
|
}
|
});
|
dialog.show();
|
|
}
|
private void startLogin(){
|
Intent intent = new Intent(SplashActivity.this,LoginActivity.class);
|
startActivity(intent);
|
Thread thread = new Thread(new Runnable(){
|
public void run(){
|
try {
|
Thread.sleep(500);
|
finish();
|
} catch (InterruptedException e) {
|
e.printStackTrace();
|
}
|
|
}
|
});
|
thread.run();
|
}
|
@Override
|
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
|
switch (requestCode){
|
case REQUSET_PERMISSIONS:
|
for (int i = 0;i<grantResults.length;i++){
|
if (grantResults[i] == PackageManager.PERMISSION_DENIED){
|
hasDeniedPermisson = true;
|
}
|
}
|
if (hasDeniedPermisson){
|
AlertDialog.Builder dialog =new AlertDialog.Builder(SplashActivity.this);
|
dialog.setTitle("权限缺失");
|
dialog.setMessage("app的运行需要足够的权限,点击确定手动将权限全部允许");
|
dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() {
|
@Override
|
public void onClick(DialogInterface dialogInterface, int i) {
|
Intent intent=getAppDetailSettingIntent(SplashActivity.this);
|
startActivity(intent);
|
finish();
|
}
|
});
|
dialog.setCancelable(false);
|
dialog.show();
|
}else {
|
if (application.isLoadPreDataWhenOpen()){
|
//初始化数据库
|
DbFactory.init(application);
|
InitDataTask task = new InitDataTask(application,handler);
|
task.execute();
|
}else {
|
startLogin();
|
}
|
|
}
|
}
|
}
|
|
public Intent getAppDetailSettingIntent(Context context) {
|
Intent localIntent = new Intent();
|
localIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
if (Build.VERSION.SDK_INT >= 9) {
|
localIntent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS");
|
localIntent.setData(Uri.fromParts("package", context.getPackageName(), null));
|
} else if (Build.VERSION.SDK_INT <= 8) {
|
localIntent.setAction(Intent.ACTION_VIEW);
|
localIntent.setClassName("com.android.settings", "com.android.settings.InstalledAppDetails");
|
localIntent.putExtra("com.android.settings.ApplicationPkgName", context.getPackageName());
|
}
|
return localIntent;
|
}
|
|
|
}
|