想要实现登录后拍照,但按登录后直接闪退,不能跳到拍照页面,代码有什么问题呢
MainActivity.java
package com.example.mylogin;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
EditText name,pwd;
Button btnlogin,btnreg;
Mysql mysql;
SQLiteDatabase db;
SharedPreferences sp1,sp2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
name = this.findViewById(R.id.name); //用户名输入框
pwd = this.findViewById(R.id.pwd); //密码输入框
btnlogin = this.findViewById(R.id.login); //登录按钮
btnreg = this.findViewById(R.id.reg); //注册按钮
sp1 = this.getSharedPreferences("useinfo",this.MODE_PRIVATE);
sp2 = this.getSharedPreferences("username",this.MODE_PRIVATE);
name.setText(sp1.getString("usname",null));
pwd.setText(sp1.getString("uspwd",null));
mysql = new Mysql(this,"Userinfo",null,1); //建数据库或者取数据库
db = mysql.getReadableDatabase();
btnlogin.setOnClickListener(new View.OnClickListener() { //登录事件
@Override
public void onClick(View v) {
String username = name.getText().toString();
String password = pwd.getText().toString(); //获取用户输入的用户名和密码
//查询用户名和密码相同的数据
Cursor cursor = db.query("logins",new String[]{"usname","uspwd"}," usname=? and uspwd=?",new String[]{username,password},null,null,null);
int flag = cursor.getCount(); //查询出来的记录项的条数,若没有该用户则为0条
if(flag!=0){ //若查询出的记录不为0,则进行跳转操作
Intent intent = new Intent();
intent.setClass(MainActivity.this,Welcome.class); //设置页面跳转
SharedPreferences.Editor editor = sp2.edit();
cursor.moveToFirst(); //将光标移动到position为0的位置,默认位置为-1
String loginname = cursor.getString(0);
editor.putString("Loginname",loginname);
editor.commit(); //将用户名存到SharedPreferences中
startActivity(intent);
}
else{
Toast.makeText(MainActivity.this,"用户名或密码错误!",Toast.LENGTH_LONG).show(); //提示用户信息错误或没有账号
}
}
});
btnreg.setOnClickListener(new View.OnClickListener() { //注册事件
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(MainActivity.this,Register.class); //跳转到注册页面
startActivity(intent);
Toast.makeText(MainActivity.this,"前往注册!",Toast.LENGTH_SHORT).show();
}
});
}
}
想要跳转到Welcome页面,Welcome.java
package com.example.mylogin;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class Welcome extends AppCompatActivity {
public static final int TAKE_PHOTO = 1;
public static final int CHOOSE_PHOTO = 2;
private ImageView picture;
private Intent intent1,intent2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button chooseFromAlbum = findViewById(R.id.choose_from_album);
chooseFromAlbum.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (ContextCompat.checkSelfPermission(Welcome.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(Welcome.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, CHOOSE_PHOTO);
} else {
openAlbum();//打开album的界面
}
}
});
Button takePhoto = findViewById(R.id.take_photo);
picture = findViewById(R.id.picture);
takePhoto.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 动态申请权限
if (ContextCompat.checkSelfPermission(Welcome.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(Welcome.this, new String[]{Manifest.permission.CAMERA}, TAKE_PHOTO);
} else {
// 启动相机程序
startCamera();
}
}
});
intent1=new Intent(this,Albums.class);//创建跳转到Albums显示的窗口的Intent
intent2=new Intent(this,Camera.class);//创建跳转到Camera显示的窗口的Intent
}
private void openAlbum() {
startActivity(intent1);//进入album的窗口界面
}
private void startCamera() {
startActivity(intent2);//进入camera的窗口界面
//Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
// 指定图片的输出地址为imageUri
//mPhotoPath = getSDPath()+"/"+ getPhotoFileName();//设置图片文件路径,getSDPath()和getPhotoFileName()具体实现在下面
//intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
//startActivityForResult(intent, TAKE_PHOTO);
}
}
闪退日志贴出来