riku
2022-02-18 d59d55575d913646b7a90fca651904ab889c6723
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
package cn.flightfeather.thirdappmodule.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.thirdappmodule.R;
import cn.flightfeather.thirdappmodule.common.database.DbFactory;
import cn.flightfeather.thirdappmodule.CommonApplication;
import cn.flightfeather.thirdappmodule.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;
            }
        }
    };
 
    protected int getLayoutId() {
        return R.layout.activity_splash;
    }
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(getLayoutId());
        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();
 
    }
    protected 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.start();
    }
    @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;
    }
 
 
}