package com.junxu.wechatrecord;
import android.Manifest;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.provider.Settings;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import com.junxu.wechatrecord.adapter.WeChatInfoAdapter;
import com.junxu.wechatrecord.app.WeChatApplication;
import com.junxu.wechatrecord.bean.Message;
import com.junxu.wechatrecord.bean.UserBean;
import com.junxu.wechatrecord.presenter.ContactPresenter;
import com.junxu.wechatrecord.utils.UinSPUtils;
import com.junxu.wechatrecord.view.ContactView;
import java.util.List;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
public class WeChatInfoActivity extends AppCompatActivity implements ContactView, WeChatInfoAdapter.OnItemClickListener {
@BindView(R.id.rv_wechat_info)
RecyclerView recyclerView;
@BindView(R.id.et_uin)
EditText etUin;
@BindView(R.id.btn_uin_commit)
Button btnUinCommit;
@BindView(R.id.layout_uin)
LinearLayout layoutUin;
String filePath;
String mUin;
int position = -1;
private static final int MY_PERMISSION_REQUEST_CODE = 10000;
private String[] permissions = new String[]{
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE
};
SharedPreferences preferences;
SharedPreferences.Editor editor;
private ContactPresenter presenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_we_chat_info);
ButterKnife.bind(this);
preferences = WeChatApplication.mContext.getApplicationContext().getSharedPreferences("uin", Context.MODE_PRIVATE);
editor = preferences.edit();
Intent intent = getIntent();
if (intent != null) {
position = intent.getIntExtra("position", -1);
String fileName = intent.getStringExtra("fileName");
if (!TextUtils.isEmpty(fileName)) {
filePath = "/data/data/com.tencent.mm/MicroMsg/" + fileName + "/EnMicroMsg.db";
}
if (position != -1) {
mUin = preferences.getString("uin" + position, "");
if(!TextUtils.isEmpty(mUin)){
layoutUin.setVisibility(View.GONE);
getPermission();
}
}
}
btnUinCommit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mUin = etUin.getText().toString();
if (TextUtils.isEmpty(mUin)) {
etUin.setText("uin输入为空了,请重新输入!");
} else {
UinSPUtils.put("uin" + position,mUin);
if (!TextUtils.isEmpty(filePath)) {
getPermission();
}
}
}
});
}
private void getRecord(){
if (position!=-1 && !TextUtils.isEmpty(filePath)) {
presenter = new ContactPresenter(this);
presenter.init(this, filePath, mUin);
presenter.showAddressList();
}
}
public void getPermission() {
/**
* 检查是否有相应的权限
*/
boolean isAllGranted = checkPermissionAllGranted();
// 如果这3个权限全都拥有, 则直接执行备份代码
if (isAllGranted) {
getRecord();
return;
}
/**
* 请求权限
*/
// 一次请求多个权限, 如果其他有权限是已经授予的将会自动忽略掉
ActivityCompat.requestPermissions(this, permissions, MY_PERMISSION_REQUEST_CODE);
}
/**
* 检查是否拥有指定的所有权限
*/
private boolean checkPermissionAllGranted() {
for (String permission : permissions) {
if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {
// 只要有一个权限没有被授予, 则直接返回 false
return false;
}
}
return true;
}
/**
* 申请权限结果返回处理
*/
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == MY_PERMISSION_REQUEST_CODE) {
boolean isAllGranted = true;
// 判断是否所有的权限都已经授予了
for (int grant : grantResults) {
if (grant != PackageManager.PERMISSION_GRANTED) {
isAllGranted = false;
break;
}
}
if (isAllGranted) {
// 如果所有的权限都授予了, 则执行备份代码
getRecord();
} else {
// 弹出对话框告诉用户需要权限的原因, 并引导用户去应用权限管理中手动打开权限按钮
openAppDetails();
}
}
}
/**
* 打开 APP 的详情设置
*/
private void openAppDetails() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("恢复记录需要信息读取权限,请到 “应用信息 -> 权限” 中授予!");
builder.setPositiveButton("授权", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setData(Uri.parse("package:" + getPackageName()));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
startActivity(intent);
}
});
builder.setNegativeButton("取消", null);
builder.show();
}
@Override
public void onSetWeChatContactInfo(List<UserBean> weChatInfoList) {
recyclerView.setVisibility(View.VISIBLE);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
WeChatInfoAdapter weChatInfoAdapter = new WeChatInfoAdapter(this, weChatInfoList);
weChatInfoAdapter.setmOnItemClickListener(this);
recyclerView.setAdapter(weChatInfoAdapter);
}
@Override
public void onItemClick(String talker) {
RecordActivity.startAction(this,filePath,position,talker);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (presenter != null){
presenter.destroy();
presenter = null;
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
工程是获取Android手机的微信聊天记录.zip
共64个文件
xml:21个
java:20个
png:10个
0 下载量 69 浏览量
2024-08-20
10:46:24
上传
评论
收藏 8.78MB ZIP 举报
温馨提示
项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松copy复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全栈开发),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助 【资源内容】:项目具体内容可查看/点击本页面下方的*资源详情*,包含完整源码+工程文件+说明(若有)等。【若无VIP,此资源可私信获取】 【本人专注IT领域】:有任何使用问题欢迎随时与我联系,我会及时解答,第一时间为您提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【适合场景】:相关项目设计中,皆可应用在项目开发、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面中 可借鉴此优质项目实现复刻,也可基于此项目来扩展开发出更多功能 #注 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担 2. 部分字体及插图等来自网络,若是侵权请联系删除,本人不对所涉及的版权问题或内容负法律责任。收取的费用仅用于整理和收集资料耗费时间的酬劳 3. 积分资源不提供使用问题指导/解答
资源推荐
资源详情
资源评论
收起资源包目录
工程是获取Android手机的微信聊天记录.zip (64个子文件)
DSandroidffv1
gradle.properties 730B
gradle
wrapper
gradle-wrapper.jar 52KB
gradle-wrapper.properties 230B
app
src
androidTest
java
com
junxu
wechatrecord
ExampleInstrumentedTest.java 745B
test
java
com
junxu
wechatrecord
ExampleUnitTest.java 400B
main
java
com
junxu
wechatrecord
adapter
WeChatInfoAdapter.java 3KB
FileNameAdapter.java 2KB
RecordListAdapter.java 2KB
WeChatInfoActivity.java 8KB
RecordActivity.java 2KB
app
WeChatApplication.java 343B
utils
UinSPUtils.java 676B
MD5Util.java 1KB
DatabaseUtils.java 2KB
presenter
RecordPresenter.java 3KB
ContactPresenter.java 2KB
MainPresenter.java 5KB
view
RecordView.java 241B
ContactView.java 254B
MainView.java 163B
MainActivity.java 7KB
bean
Message.java 1KB
UserBean.java 1KB
res
mipmap-xxhdpi
ic_launcher_round.png 10KB
ic_launcher.png 6KB
mipmap-hdpi
ic_launcher_round.png 5KB
ic_launcher.png 3KB
drawable-v24
ic_launcher_foreground.xml 2KB
mipmap-anydpi-v26
ic_launcher.xml 272B
ic_launcher_round.xml 272B
mipmap-mdpi
ic_launcher_round.png 3KB
ic_launcher.png 2KB
mipmap-xxxhdpi
ic_launcher_round.png 15KB
ic_launcher.png 9KB
mipmap-xhdpi
ic_launcher_round.png 7KB
ic_launcher.png 4KB
values
colors.xml 208B
strings.xml 169B
styles.xml 383B
layout
activity_we_chat_info.xml 2KB
activity_main.xml 940B
layout_file_name_item.xml 388B
activity_contact.xml 658B
layout_record_item_receive.xml 743B
layout_record_item_send.xml 811B
activity_record.xml 604B
layout_rv_item.xml 873B
drawable
ic_launcher_background.xml 5KB
AndroidManifest.xml 1KB
proguard-rules.pro 751B
libs
dom4j-1.6.1.jar 307KB
build.gradle 1KB
.gitignore 7B
gradlew.bat 2KB
build.gradle 546B
.idea
runConfigurations.xml 564B
vcs.xml 180B
misc.xml 2KB
modules.xml 361B
gradle.xml 626B
settings.gradle 15B
gradlew 5KB
.gitignore 118B
app-10-29.apk 8.66MB
共 64 条
- 1
资源评论
热爱技术。
- 粉丝: 2425
- 资源: 7862
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功