· 6 years ago · Jul 02, 2019, 03:16 PM
1public class TelaInicial extends AppCompatActivity {
2
3 @Override
4 protected void onCreate(Bundle savedInstanceState) {
5 super.onCreate(savedInstanceState);
6 setContentView(R.layout.activity_tela_inicial);
7 btnProximo();
8
9
10 }
11
12 private void btnProximo() {
13 TextView btnProximo = findViewById(R.id.btnLogar);
14 btnProximo.setOnClickListener(new View.OnClickListener() {
15 @Override
16 public void onClick(View view) {
17 Intent logar = new Intent(TelaInicial.this, Logar.class);
18 startActivity(logar);
19 }
20 });
21 }
22}
23
24public class Logar extends AppCompatActivity {
25
26 //Declarando EditTexts
27 EditText txtEmailLog;
28 EditText txtSenhaLog;
29
30 //Declarando TextInputLayout
31 TextInputEditText InEmailLog;
32 TextInputEditText InSenhaLog;
33
34 //Declarando botão
35 Button btnLogar;
36
37 //Declarando SqliteHelper
38 SqliteHelper sqliteHelper;
39
40 //Este método é usado para conectar visões XML a seus Objetos
41 private void initViews() {
42 txtEmailLog = findViewById(R.id.txtEmailLog);
43 txtSenhaLog = findViewById(R.id.txtSenhaLog);
44 InEmailLog = findViewById(R.id.InEmailLog);
45 InSenhaLog = findViewById(R.id.InSenhaLog);
46 btnLogar = findViewById(R.id.btnLogar);
47 }
48
49
50 @Override
51 protected void onCreate(Bundle savedInstanceState) {
52 super.onCreate(savedInstanceState);
53 setContentView(R.layout.activity_logar);
54 txtCriarConta();
55 sqliteHelper = new SqliteHelper(this);
56 initViews();
57 btnLogar();
58
59
60 }
61
62 public void btnLogar(){
63 btnLogar.setOnClickListener(new View.OnClickListener(){
64 public void onClick(View view){
65 if (valida()){
66
67 // Obtém valores dos campos EditText
68 String Email = txtEmailLog.getText().toString();
69 String Password = txtSenhaLog.getText().toString();
70
71 // Autentica usuário
72 Usuarios currentUser = sqliteHelper.ValidaUsuario(new Usuarios(null, null, Email, Password));
73
74 // Verifique se a autenticação foi bem sucedida ou não
75 if (currentUser != null) {
76 Snackbar.make(btnLogar, "Login realizado com sucesso", Snackbar.LENGTH_LONG).show();
77
78 //Se o login foi aceito o usuário deve ir para a lista
79 Intent intent = new Intent(Logar.this, Lista.class);
80 startActivity(intent);
81 finish();
82
83 } else {
84
85 // Se o login falhar
86 Snackbar.make(btnLogar, "Login falhou, por favor tente outra vez", Snackbar.LENGTH_LONG).show();
87
88 }
89 }
90 }
91 });
92 }
93
94
95 // Este método é usado para validar a entrada dada pelo usuário
96 public boolean valida() {
97 boolean valido = false;
98
99 // Obtém valores dos campos EditText
100 String email = txtEmailLog.getText().toString();
101 String senha = txtSenhaLog.getText().toString();
102
103 // Manipulando validação para o campo Email
104 if (!android.util.Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
105 valido = false;
106 InEmailLog.setError("Please enter valid email!");
107 } else {
108 valido = true;
109 InEmailLog.setError(null);
110 }
111
112 // Manipulando validação para o campo Senha
113 if (senha.isEmpty()) {
114 valido = false;
115 InSenhaLog.setError("Please enter valid password!");
116 } else {
117 if (senha.length() > 5) {
118 valido = true;
119 InSenhaLog.setError(null);
120 } else {
121 valido = false;
122 InSenhaLog.setError("Password is to short!");
123 }
124 }
125
126 return valido;
127 }
128
129
130
131
132
133
134
135
136 private void txtCriarConta() {
137 TextView btnProximo = findViewById(R.id.txtRegistrarLog);
138 btnProximo.setOnClickListener(new View.OnClickListener() {
139 @Override
140 public void onClick(View view) {
141 Intent Registrar = new Intent(Logar.this, Registrar.class);
142 startActivity(Registrar);
143 }
144 });
145 }
146}
147
148public class SqliteHelper extends SQLiteOpenHelper {
149
150 //Nome do banco de dados
151 public static final String BANCO_DADOS = "keyssword.db";
152
153 //Versão do banco de dados
154 public static final int VERSAO_BANDODADOS = 1;
155
156 //Nome da tabela
157 public static final String TABELA_USUARIOS = "usuarios";
158
159 //********Campos da tabela de usuários********//
160
161 //Coluna de ID, Chave primária
162 public static final String ID = "id";
163
164 //Coluna de nome de usuário
165 public static final String NOME_USUARIO = "nomeusuario";
166
167 //Coluna E-mail
168 public static final String EMAIL = "email";
169
170 //Coluna senha
171 public static final String SENHA = "senha";
172
173 //SQL para criar tabela de usuários
174 public static final String SQL_TABELA_USUARIOS = " CREATE TABLE " + TABELA_USUARIOS
175 + " ( " + ID + " INTEGER PRIMARY KEY, "
176 + NOME_USUARIO + " TEXT, " + EMAIL + " TEXT, "
177 + SENHA + " TEXT" + " ) ";
178
179 public SqliteHelper(Context context) {
180 super(context, TABELA_USUARIOS, null, VERSAO_BANDODADOS);
181
182 }
183
184
185 @Override
186 public void onCreate(SQLiteDatabase sqLiteDatabase){
187
188 //Cria uma tabela quando o onCreate é chamado
189 sqLiteDatabase.execSQL(SQL_TABELA_USUARIOS);
190 }
191
192
193 @Override
194 public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int il) {
195
196 //Descarta a tabela para criar uma nova,
197 // se a versão do banco de dados for maior
198 sqLiteDatabase.execSQL(" DROP TABLE IF EXISTS " + TABELA_USUARIOS);
199 }
200
201 //Esse método é responsavel por adicionar usuários à tabela
202 public void addUser(Usuarios usuario) {
203
204 //Abre o banco de dados para gravação
205 SQLiteDatabase db = this.getWritableDatabase();
206
207 //Cria os valores de conteúdo para inserir
208 ContentValues inserir = new ContentValues();
209
210 //Coloca o nome de usuário em values
211 inserir.put(NOME_USUARIO, usuario.nomeUsuario);
212
213 //Coloca o emial em values
214 inserir.put(EMAIL, usuario.email);
215
216 //Coloca a senha em values
217 inserir.put(SENHA, usuario.senha);
218
219 //Inserir linha
220 //long todo_id = db.insert(TABELA_USUARIOS, null, values);
221 }
222
223
224 public Usuarios ValidaUsuario(Usuarios usuario) {
225 SQLiteDatabase db = this.getReadableDatabase();
226 //Seleciona a tabela
227 Cursor cursor = db.query(/*Seleciona a tabela*/ TABELA_USUARIOS,
228 new String[]{ID, NOME_USUARIO, EMAIL, SENHA},/*Seleciona as colunas para a query*/
229 EMAIL + "=?",
230 new String[]{usuario.email},
231 null,null,null);
232
233 if (cursor != null && cursor.moveToFirst() && cursor.getCount()>0){
234 Usuarios user = new Usuarios(cursor.getString(0),
235 cursor.getString(1), cursor.getString(2),
236 cursor.getString(3));
237
238 if (usuario.senha.equalsIgnoreCase(user.senha)){
239 return user;
240 }
241 }
242 return null;
243 }
244
245 public boolean ValidaEmail(String email) {
246 SQLiteDatabase db = this.getReadableDatabase();
247 Cursor cursor = db.query(TABELA_USUARIOS,
248 new String[]{ID, NOME_USUARIO,EMAIL,SENHA},
249 EMAIL + "+?",
250 new String[] {email},
251 null, null, null);
252
253 if (cursor != null && cursor.moveToFirst() && cursor.getCount()>0){
254 return true;
255 }
256
257 return false;
258 }
259
260
261}
262
26304/01 02:28:06: Launching app
264$ adb install-multiple -r -t D:Program FilesAndroidStudioProjectsKeysswordappbuildintermediatessplit-apkdebugslicesslice_9.apk D:Program FilesAndroidStudioProjectsKeysswordappbuildintermediatessplit-apkdebugslicesslice_8.apk D:Program FilesAndroidStudioProjectsKeysswordappbuildintermediatesresourcesinstant-rundebugresources-debug.apk D:Program FilesAndroidStudioProjectsKeysswordappbuildintermediatessplit-apkdebugslicesslice_6.apk D:Program FilesAndroidStudioProjectsKeysswordappbuildintermediatessplit-apkdebugslicesslice_1.apk D:Program FilesAndroidStudioProjectsKeysswordappbuildintermediatessplit-apkdebugslicesslice_0.apk D:Program FilesAndroidStudioProjectsKeysswordappbuildintermediatessplit-apkdebugslicesslice_7.apk D:Program FilesAndroidStudioProjectsKeysswordappbuildintermediatessplit-apkdebugslicesslice_2.apk D:Program FilesAndroidStudioProjectsKeysswordappbuildintermediatessplit-apkdebugslicesslice_5.apk D:Program FilesAndroidStudioProjectsKeysswordappbuildintermediatessplit-apkdebugslicesslice_4.apk D:Program FilesAndroidStudioProjectsKeysswordappbuildintermediatessplit-apkdebugdepdependencies.apk D:Program FilesAndroidStudioProjectsKeysswordappbuildintermediatessplit-apkdebugslicesslice_3.apk D:Program FilesAndroidStudioProjectsKeysswordappbuildintermediatesinstant-run-apkdebugapp-debug.apk
265Split APKs installed in 1 s 586 ms
266$ adb shell am start -n "com.gnd.keyssword/com.gnd.keyssword.TelaInicial" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
267Client not ready yet..Waiting for process to come online
268Waiting for process to come online
269Connected to process 10262 on device emulator-5554
270Capturing and displaying logcat messages from application. This behavior can be disabled in the "Logcat output" section of the "Debugger" settings page.
271D/AndroidRuntime: Shutting down VM
272E/AndroidRuntime: FATAL EXCEPTION: main
273 Process: com.gnd.keyssword, PID: 10262
274 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gnd.keyssword/com.gnd.keyssword.Logar}: java.lang.ClassCastException: com.google.android.material.textfield.TextInputLayout cannot be cast to com.google.android.material.textfield.TextInputEditText
275 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2817)
276 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
277 at android.app.ActivityThread.-wrap11(Unknown Source:0)
278 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
279 at android.os.Handler.dispatchMessage(Handler.java:105)
280 at android.os.Looper.loop(Looper.java:164)
281 at android.app.ActivityThread.main(ActivityThread.java:6541)
282 at java.lang.reflect.Method.invoke(Native Method)
283 at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
284 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
285 Caused by: java.lang.ClassCastException: com.google.android.material.textfield.TextInputLayout cannot be cast to com.google.android.material.textfield.TextInputEditText
286 at com.gnd.keyssword.Logar.initViews(Logar.java:40)
287 at com.gnd.keyssword.Logar.onCreate(Logar.java:52)
288 at android.app.Activity.performCreate(Activity.java:6975)
289 at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1213)
290 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2770)
291 at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2892)
292 at android.app.ActivityThread.-wrap11(Unknown Source:0)
293 at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1593)
294 at android.os.Handler.dispatchMessage(Handler.java:105)
295 at android.os.Looper.loop(Looper.java:164)
296 at android.app.ActivityThread.main(ActivityThread.java:6541)
297 at java.lang.reflect.Method.invoke(Native Method)
298 at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
299 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
300Application terminated.