Kate Mobile v109.1版本的 MD5 值为:fcd76ded5f363ecbfac46035a4ed2a23
以下内容为反编译后的 MessageSaveActivity.java 源代码,内容仅作参考
package com.perm.kate;
import android.os.Bundle;
import android.os.Environment;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import com.perm.kate.api.Attachment;
import com.perm.kate.api.Group;
import com.perm.kate.api.Message;
import com.perm.kate.api.Photo;
import com.perm.kate.api.User;
import com.perm.kate.session.Callback;
import com.perm.kate.session.Session;
import com.perm.utils.TimeFix;
import com.perm.utils.UserCache;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.text.DateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
public class MessageSaveActivity extends BaseActivity {
long chat_id;
EditText fileEditText;
long offset;
Writer out;
EditText pathEditText;
boolean stop;
long user_id;
View view1;
View view2;
View view3;
final int page_size = 200;
final UserCache userCache = new UserCache();
final User me = KApplication.db.fetchUser(Long.parseLong(KApplication.session.getMid()));
final DateFormat format = DateFormat.getDateTimeInstance();
private final View.OnClickListener startClick = new View.OnClickListener() {
@Override
public void onClick(View view) {
if (!PhotoSaver.isScopedStorage() && ContextCompat.checkSelfPermission(MessageSaveActivity.this, "android.permission.WRITE_EXTERNAL_STORAGE") != 0) {
ActivityCompat.requestPermissions(MessageSaveActivity.this, new String[]{"android.permission.WRITE_EXTERNAL_STORAGE"}, 1);
return;
}
MessageSaveActivity.this.start();
MessageSaveActivity messageSaveActivity = MessageSaveActivity.this;
messageSaveActivity.showView(messageSaveActivity.view2);
}
};
final Callback callback_messages = new Callback(this) {
@Override
public void error(Throwable th) {
super.error(th);
MessageSaveActivity.this.displayErrorState();
Helper.closeStream(MessageSaveActivity.this.out);
MessageSaveActivity messageSaveActivity = MessageSaveActivity.this;
messageSaveActivity.showView(messageSaveActivity.view3);
MessageSaveActivity.this.stop = true;
}
@Override
public void ready(Object obj) {
ArrayList arrayList = (ArrayList) obj;
MessageSaveActivity.this.offset += arrayList.size();
MessageThreadFragment.getMissingUsers(arrayList);
try {
MessageSaveActivity.this.saveMessages(arrayList);
MessageSaveActivity.this.displayProgressText();
if (arrayList.size() <= 100) {
MessageSaveActivity messageSaveActivity = MessageSaveActivity.this;
messageSaveActivity.stop = true;
messageSaveActivity.showView(messageSaveActivity.view3);
Helper.closeStream(MessageSaveActivity.this.out);
}
} catch (Throwable th) {
th.printStackTrace();
Helper.closeStream(MessageSaveActivity.this.out);
MessageSaveActivity.this.displayErrorState();
Helper.reportError(th);
MessageSaveActivity messageSaveActivity2 = MessageSaveActivity.this;
messageSaveActivity2.showView(messageSaveActivity2.view3);
MessageSaveActivity.this.stop = true;
}
}
};
private final View.OnClickListener closeClick = new View.OnClickListener() {
@Override
public void onClick(View view) {
MessageSaveActivity.this.finish();
}
};
public void displayErrorState() {
runOnUiThread(new Runnable() {
@Override
public void run() {
((TextView) MessageSaveActivity.this.findViewById(R.id.ready)).setText(R.string.message_save_failed);
}
});
}
private String getDefaultFileName() {
String str = "messages";
try {
if (this.chat_id > 0) {
str = (String) KApplication.db.fetchChatName(this.chat_id, Long.parseLong(KApplication.session.getMid()));
} else if (User.isVirtualUser(this.user_id)) {
Group fetchGroup = KApplication.db.fetchGroup(User.virtualUserIdToGroupId(this.user_id));
if (fetchGroup != null) {
str = fetchGroup.name;
}
} else {
User user = this.userCache.get(this.user_id);
str = user.first_name + " " + user.last_name;
}
} catch (Throwable th) {
th.printStackTrace();
Helper.reportError(th);
}
return str + ".txt";
}
private void getMissingUsersFromForwardedMessages(Message message) {
HashSet hashSet = new HashSet();
Iterator<Attachment> it = message.attachments.iterator();
while (it.hasNext()) {
Message message2 = it.next().message;
if (message2 != null) {
hashSet.add(Long.valueOf(message2.uid));
}
}
KApplication.getMissingUsers(new ArrayList(hashSet));
}
private void saveMessage(Message message, String str) {
User user = message.is_out ? this.me : this.userCache.get(message.uid);
this.out.write(str);
if (user != null) {
Writer writer = this.out;
writer.write(user.first_name + " " + user.last_name);
}
Writer writer2 = this.out;
writer2.write(" (" + this.format.format(new Date(TimeFix.fix(message.date) * 1000)) + "):");
this.out.write("\n");
if (!TextUtils.isEmpty(message.body)) {
Writer writer3 = this.out;
writer3.write(str + message.body);
this.out.write("\n");
}
getMissingUsersFromForwardedMessages(message);
if (message.attachments.size() > 0) {
Writer writer4 = this.out;
writer4.write(str + ((Object) getText(R.string.title_attachments)) + ":\n");
}
Iterator<Attachment> it = message.attachments.iterator();
while (it.hasNext()) {
Attachment next = it.next();
if (next.type.equals("photo") || next.type.equals("posted_photo")) {
Photo photo = next.photo;
String str2 = photo.src_big;
if (!TextUtils.isEmpty(photo.src_xbig)) {
str2 = next.photo.src_xbig;
}
Writer writer5 = this.out;
writer5.write(str + "http://vk.com/photo" + next.photo.owner_id + "_" + next.photo.pid + " : " + str2);
this.out.write("\n");
} else if (next.type.equals("video")) {
Writer writer6 = this.out;
writer6.write(str + "http://vk.com/video" + next.video.owner_id + "_" + next.video.vid + " : " + next.video.title);
this.out.write("\n");
} else if (next.type.equals("doc")) {
Writer writer7 = this.out;
writer7.write(str + "http://vk.com/doc" + next.document.owner_id + "_" + next.document.id + " : " + next.document.title);
this.out.write("\n");
} else if (next.type.equals("audio")) {
Writer writer8 = this.out;
writer8.write(str + "http://vk.com/audio?id=" + next.audio.owner_id + "&audio_id=" + next.audio.aid + " : " + next.audio.artist + " - " + next.audio.title);
this.out.write("\n");
} else if (next.type.equals("gift")) {
Writer writer9 = this.out;
writer9.write(str + "Подарок " + next.gift.thumb_256);
this.out.write("\n");
} else if (next.type.equals("geo")) {
Writer writer10 = this.out;
writer10.write(str + getText(R.string.place).toString());
this.out.write("\n");
} else if (next.type.equals("wall")) {
Writer writer11 = this.out;
writer11.write(str + "http://vk.com/wall" + next.wallMessage.to_id + "_" + next.wallMessage.id);
this.out.write("\n");
} else if (next.type.equals("message")) {
Message message2 = next.message;
saveMessage(message2, str + " ");
}
}
if (TextUtils.isEmpty(str)) {
this.out.write("\n");
}
}
public void saveMessages(ArrayList arrayList) {
Iterator it = arrayList.iterator();
while (it.hasNext()) {
saveMessage((Message) it.next(), "");
}
this.out.flush();
}
void displayProgressText() {
runOnUiThread(new Runnable() {
@Override
public void run() {
MessageSaveActivity messageSaveActivity = MessageSaveActivity.this;
String string = messageSaveActivity.getString(R.string.message_save_progress, Long.valueOf(messageSaveActivity.offset));
((TextView) MessageSaveActivity.this.findViewById(R.id.progress_text)).setText(string);
((TextView) MessageSaveActivity.this.findViewById(R.id.progress_text_2)).setText(string);
}
});
}
@Override
public void onCreate(Bundle bundle) {
String str;
super.onCreate(bundle);
setContentView(R.layout.message_save);
setHeaderTitle(R.string.label_save);
this.chat_id = getIntent().getLongExtra("chat_id", 0L);
this.user_id = getIntent().getLongExtra("user_id", 0L);
findViewById(R.id.start).setOnClickListener(this.startClick);
findViewById(R.id.close).setOnClickListener(this.closeClick);
String str2 = Environment.getExternalStorageDirectory().getAbsolutePath() + "/KateMessages";
if (PhotoSaver.isScopedStorage()) {
StringBuilder sb = new StringBuilder();
str = Environment.DIRECTORY_DOCUMENTS;
sb.append(Environment.getExternalStoragePublicDirectory(str).getAbsolutePath());
sb.append("/KateMessages");
str2 = sb.toString();
}
EditText editText = (EditText) findViewById(R.id.path);
this.pathEditText = editText;
editText.setText(str2);
EditText editText2 = (EditText) findViewById(R.id.filename);
this.fileEditText = editText2;
editText2.setText(getDefaultFileName());
this.view1 = findViewById(R.id.view1);
this.view2 = findViewById(R.id.view2);
this.view3 = findViewById(R.id.view3);
showView(this.view1);
}
@Override
public void onRequestPermissionsResult(int i, String[] strArr, int[] iArr) {
if (i == 1 && iArr.length > 0 && iArr[0] == 0) {
start();
showView(this.view2);
}
}
void showView(final View view) {
runOnUiThread(new Runnable() {
@Override
public void run() {
View view2 = MessageSaveActivity.this.view1;
view2.setVisibility(view == view2 ? 0 : 8);
View view3 = MessageSaveActivity.this.view2;
view3.setVisibility(view == view3 ? 0 : 8);
View view4 = MessageSaveActivity.this.view3;
view4.setVisibility(view != view4 ? 8 : 0);
}
});
}
protected void start() {
new Thread() {
@Override
public void run() {
String obj = MessageSaveActivity.this.pathEditText.getText().toString();
String obj2 = MessageSaveActivity.this.fileEditText.getText().toString();
new File(obj).mkdirs();
try {
MessageSaveActivity messageSaveActivity = MessageSaveActivity.this;
messageSaveActivity.out = new OutputStreamWriter(new FileOutputStream(obj + "/" + obj2), "utf-8");
MessageSaveActivity messageSaveActivity2 = MessageSaveActivity.this;
messageSaveActivity2.offset = 0L;
messageSaveActivity2.stop = false;
messageSaveActivity2.displayProgressText();
do {
Session session = KApplication.session;
MessageSaveActivity messageSaveActivity3 = MessageSaveActivity.this;
long j = messageSaveActivity3.user_id;
long j2 = messageSaveActivity3.chat_id;
Long valueOf = Long.valueOf(messageSaveActivity3.offset);
MessageSaveActivity messageSaveActivity4 = MessageSaveActivity.this;
session.getMessagesHistory(j, j2, valueOf, 200, null, 1, messageSaveActivity4.callback_messages, messageSaveActivity4);
} while (!MessageSaveActivity.this.stop);
} catch (Throwable th) {
th.printStackTrace();
Helper.reportError(th);
MessageSaveActivity.this.displayErrorState();
MessageSaveActivity messageSaveActivity5 = MessageSaveActivity.this;
messageSaveActivity5.showView(messageSaveActivity5.view3);
Helper.closeStream(MessageSaveActivity.this.out);
}
}
}.start();
}
}