develop
胡飞林 5 months ago
parent 00c6009b55
commit c501baad67

@ -1,3 +1,5 @@
package com.example.mailclient.activity;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.EditText;
@ -41,10 +43,9 @@ public class LoginActivity extends AppCompatActivity {
@Override
public void onResponse(Call<LoginResponse> call, Response<LoginResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().success) {
// 保存用户信息和Token
// 保存用户信息
SharedPreferences sp = getSharedPreferences("app_prefs", MODE_PRIVATE);
SharedPreferences.Editor editor = sp.edit();
editor.putString("token", response.body().data.user.username); // 使用用户名作为token
editor.putString("username", response.body().data.user.username);
editor.putString("email", response.body().data.user.email);
editor.putBoolean("is_admin", response.body().data.user.is_admin);

@ -3,11 +3,23 @@ package com.example.mailclient.activity;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import android.content.SharedPreferences;
import android.widget.Toast;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import com.example.mailclient.R;
import com.example.mailclient.api.MailService;
import com.example.mailclient.api.ApiClient;
import com.example.mailclient.model.MailDetailResponse;
public class MailDetailActivity extends AppCompatActivity {
private TextView tvSubject, tvFrom, tvTo, tvContent, tvDate;
private MailService apiService;
private String token;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -21,15 +33,51 @@ public class MailDetailActivity extends AppCompatActivity {
tvContent = findViewById(R.id.tv_content);
tvDate = findViewById(R.id.tv_date);
// 初始化Retrofit
apiService = ApiClient.getClient().create(MailService.class);
// 获取token
SharedPreferences sp = getSharedPreferences("app_prefs", MODE_PRIVATE);
token = sp.getString("token", "");
// 获取传递的邮件ID
String mailId = getIntent().getStringExtra("mail_id");
// 这里可以加载邮件详情
// loadMailDetail(mailId);
// 加载邮件详情
if (mailId != null && !mailId.isEmpty()) {
loadMailDetail(mailId);
} else {
Toast.makeText(this, "邮件ID无效", Toast.LENGTH_SHORT).show();
}
}
// 可以添加加载邮件详情的方法
// 加载邮件详情
private void loadMailDetail(String mailId) {
// 实现邮件详情加载逻辑
apiService.getMailDetail("Bearer " + token, mailId).enqueue(new Callback<MailDetailResponse>() {
@Override
public void onResponse(Call<MailDetailResponse> call, Response<MailDetailResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().success) {
MailDetailResponse.MailDetail mail = response.body().data.mail;
// 更新UI
tvSubject.setText(mail.subject);
tvFrom.setText("发件人:" + mail.from);
tvTo.setText("收件人:" + mail.to);
tvContent.setText(mail.content);
tvDate.setText(mail.date);
} else {
String errorMsg = "加载邮件详情失败";
if (response.body() != null) {
errorMsg = response.body().message;
}
Toast.makeText(MailDetailActivity.this, errorMsg, Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<MailDetailResponse> call, Throwable t) {
Toast.makeText(MailDetailActivity.this, "网络错误: " + t.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
}

@ -20,6 +20,7 @@ import com.example.mailclient.api.ApiClient;
import com.example.mailclient.adapter.MailAdapter;
import com.example.mailclient.model.MailListResponse; // 添加这行导入
import com.example.mailclient.R;
import java.util.ArrayList; // 添加这行导入
public class MailboxActivity extends AppCompatActivity implements MailAdapter.OnMailClickListener {
private RecyclerView rvMails;
private MailAdapter mailAdapter;
@ -79,7 +80,13 @@ public class MailboxActivity extends AppCompatActivity implements MailAdapter.On
@Override
public void onResponse(Call<MailListResponse> call, Response<MailListResponse> response) {
if (response.isSuccessful() && response.body() != null && response.body().success) {
mailAdapter.setMailList(response.body().data.emails);
// 修复:处理空邮件列表的情况
if (response.body().data.emails != null) {
mailAdapter.setMailList(response.body().data.emails);
} else {
// 如果邮件列表为空设置一个空列表而不是null
mailAdapter.setMailList(new ArrayList<>());
}
} else {
String errorMsg = "加载失败";
if (response.body() != null) {

@ -9,6 +9,7 @@ import com.example.mailclient.model.BaseResponse;
import com.example.mailclient.model.MailRequest;
import com.example.mailclient.model.LoginResponse;
import com.example.mailclient.model.MailListResponse;
import com.example.mailclient.model.MailDetailResponse;
public interface MailService {
@POST("users.php")
@ -24,5 +25,7 @@ public interface MailService {
@Query("page") Integer page,
@Query("perPage") Integer perPage);
// 其他接口方法...
@GET("emails.php/{id}")
Call<MailDetailResponse> getMailDetail(@Header("Authorization") String token,
@Path("id") String id);
}

@ -24,6 +24,53 @@ public class LoginResponse extends BaseResponse {
public String updated_at;
// Getter 和 Setter...
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public boolean isIs_admin() {
return is_admin;
}
public void setIs_admin(boolean is_admin) {
this.is_admin = is_admin;
}
public boolean isIs_enabled() {
return is_enabled;
}
public void setIs_enabled(boolean is_enabled) {
this.is_enabled = is_enabled;
}
public String getCreated_at() {
return created_at;
}
public void setCreated_at(String created_at) {
this.created_at = created_at;
}
public String getUpdated_at() {
return updated_at;
}
public void setUpdated_at(String updated_at) {
this.updated_at = updated_at;
}
}
public LoginData getData() {

@ -0,0 +1,110 @@
package com.example.mailclient.model;
public class MailDetailResponse extends BaseResponse {
public MailDetailData data;
public static class MailDetailData {
public MailDetail mail;
public MailDetail getMail() {
return mail;
}
public void setMail(MailDetail mail) {
this.mail = mail;
}
}
public static class MailDetail {
public String id;
public String from;
public String to;
public String subject;
public String content;
public String date;
public String folder;
public int is_read;
public int is_deleted;
// Getters and Setters
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getFrom() {
return from;
}
public void setFrom(String from) {
this.from = from;
}
public String getTo() {
return to;
}
public void setTo(String to) {
this.to = to;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getFolder() {
return folder;
}
public void setFolder(String folder) {
this.folder = folder;
}
public int getIs_read() {
return is_read;
}
public void setIs_read(int is_read) {
this.is_read = is_read;
}
public int getIs_deleted() {
return is_deleted;
}
public void setIs_deleted(int is_deleted) {
this.is_deleted = is_deleted;
}
}
public MailDetailData getData() {
return data;
}
public void setData(MailDetailData data) {
this.data = data;
}
}

@ -1,7 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="purple_200">#FFBB86FC</color>
<color name="purple_500">#FF6200EE</color>
<color name="purple_700">#FF3700B3</color>
<color name="teal_200">#FF03DAC5</color>
<color name="teal_700">#FF018786</color>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
</resources>
Loading…
Cancel
Save