Commit 54546307 authored by jianglx's avatar jianglx

会员模块,城市数据的更新

parent 588a279e
...@@ -53,8 +53,8 @@ dependencies { ...@@ -53,8 +53,8 @@ dependencies {
api project(path: ':Utils') api project(path: ':Utils')
//鲁班图片压缩 https://github.com/Curzibn/Luban //鲁班图片压缩 https://github.com/Curzibn/Luban
api 'top.zibin:Luban:1.1.8' api 'top.zibin:Luban:1.1.8'
//权限申请 https://github.com/googlesamples/easypermissions // //权限申请 https://github.com/googlesamples/easypermissions
api 'pub.devrel:easypermissions:2.0.0' // api 'pub.devrel:easypermissions:2.0.0'
//Glide //Glide
api "com.github.bumptech.glide:glide:$rootProject.ext.glideVersion" api "com.github.bumptech.glide:glide:$rootProject.ext.glideVersion"
......
package com.xxfc.rv; package com.xxfc.rv;
import android.Manifest;
import android.app.AlertDialog; import android.app.AlertDialog;
import android.app.Dialog;
import android.app.Notification; import android.app.Notification;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.ServiceConnection; import android.content.ServiceConnection;
...@@ -21,10 +18,8 @@ import android.support.annotation.Nullable; ...@@ -21,10 +18,8 @@ import android.support.annotation.Nullable;
import android.support.v4.content.ContextCompat; import android.support.v4.content.ContextCompat;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.view.Gravity;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.View; import android.view.View;
import android.view.WindowManager;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
...@@ -58,16 +53,11 @@ import com.rv.component.utils.LogUtil; ...@@ -58,16 +53,11 @@ import com.rv.component.utils.LogUtil;
import com.rv.component.utils.RvCache; import com.rv.component.utils.RvCache;
import com.rv.home.rv.module.ApiConfig; import com.rv.home.rv.module.ApiConfig;
import com.ruiwenliu.wrapper.base.presenter.CommonPresenter; import com.ruiwenliu.wrapper.base.presenter.CommonPresenter;
import com.rv.home.rv.module.ui.login.LoginRvActivity;
import com.rv.home.rv.module.ui.main.home.HomeFragment; import com.rv.home.rv.module.ui.main.home.HomeFragment;
import com.rv.home.rv.module.ui.main.home.bean.EffectiveTimeBean; import com.rv.home.rv.module.ui.main.home.bean.EffectiveTimeBean;
import com.rv.im.Constants;
import com.rv.im.ImService; import com.rv.im.ImService;
import com.rv.im.ImSetting; import com.rv.im.ImSetting;
import com.rv.im.broadcast.RemoteReceiver;
import com.rv.im.call.AudioOrVideoController; import com.rv.im.call.AudioOrVideoController;
import com.rv.im.mvp.view.IChatView;
import com.rv.im.util.Md5Util;
import com.rv.rvmine.MineFragment; import com.rv.rvmine.MineFragment;
import com.rv.share.WebViewActivity; import com.rv.share.WebViewActivity;
import com.rv.share.view.PromotionDialog; import com.rv.share.view.PromotionDialog;
...@@ -75,7 +65,6 @@ import com.rv.tourism.R2; ...@@ -75,7 +65,6 @@ import com.rv.tourism.R2;
import com.rv.tourism.TourismFragment; import com.rv.tourism.TourismFragment;
import com.rv.version.bean.VersionCheckBean; import com.rv.version.bean.VersionCheckBean;
import com.rv.version.receiver.UpdateAppReceiver; import com.rv.version.receiver.UpdateAppReceiver;
import com.rv.version.util.DownloadAppUtils;
import com.rv.version.util.UpdateAppUtils; import com.rv.version.util.UpdateAppUtils;
import com.xxfc.discovery.DiscoveryFragment; import com.xxfc.discovery.DiscoveryFragment;
import com.xxfc.discovery.api.DiscoveryApi; import com.xxfc.discovery.api.DiscoveryApi;
...@@ -95,13 +84,10 @@ import java.util.Map; ...@@ -95,13 +84,10 @@ import java.util.Map;
import butterknife.BindView; import butterknife.BindView;
import butterknife.OnClick; import butterknife.OnClick;
import cn.jpush.android.api.BasicPushNotificationBuilder; import cn.jpush.android.api.BasicPushNotificationBuilder;
import cn.jpush.android.api.CustomPushNotificationBuilder;
import cn.jpush.android.api.JPushInterface; import cn.jpush.android.api.JPushInterface;
import pub.devrel.easypermissions.AppSettingsDialog;
import pub.devrel.easypermissions.EasyPermissions;
public class MainActivity extends BaseActivity<CommonPresenter> implements EasyPermissions.PermissionCallbacks { public class MainActivity extends BaseActivity<CommonPresenter>{
private static final String TAG = MainActivity.class.getSimpleName(); private static final String TAG = MainActivity.class.getSimpleName();
...@@ -149,8 +135,8 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements EasyP ...@@ -149,8 +135,8 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements EasyP
private String imPassword; private String imPassword;
private String[] permissions = new String[]{android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.WRITE_EXTERNAL_STORAGE, android.Manifest.permission.READ_EXTERNAL_STORAGE, private String[] permissions = new String[]{android.Manifest.permission.READ_PHONE_STATE,
android.Manifest.permission.CAMERA, android.Manifest.permission.RECORD_AUDIO, Manifest.permission.CALL_PHONE}; android.Manifest.permission.CAMERA, android.Manifest.permission.RECORD_AUDIO, android.Manifest.permission.CALL_PHONE};
public static Intent getIntent(Context context) { public static Intent getIntent(Context context) {
return new Intent(context, MainActivity.class); return new Intent(context, MainActivity.class);
...@@ -167,18 +153,8 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements EasyP ...@@ -167,18 +153,8 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements EasyP
StatusBarUtil.setRootViewFitsSystemWindows(mActivity, false); StatusBarUtil.setRootViewFitsSystemWindows(mActivity, false);
AudioOrVideoController.init(getApplicationContext(), logoutListener); AudioOrVideoController.init(getApplicationContext(), logoutListener);
EventBus.getDefault().register(this); EventBus.getDefault().register(this);
checkPermissions();
} }
/********
* 检查所有的权限
*/
private void checkPermissions() {
if (!EasyPermissions.hasPermissions(this, permissions)) {
EasyPermissions.requestPermissions(this, "App正常使用,需要以下权限", IChatView.REQUEST_PERMISSION_FILE, permissions);
return;
}
}
@Override @Override
protected void initView(Bundle savedInstanceState, TitleView titleView, Intent intent) { protected void initView(Bundle savedInstanceState, TitleView titleView, Intent intent) {
...@@ -450,29 +426,9 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements EasyP ...@@ -450,29 +426,9 @@ public class MainActivity extends BaseActivity<CommonPresenter> implements EasyP
} else { } else {
Toast.makeText(getApplicationContext(), "授权失败,无法下载最新App", Toast.LENGTH_SHORT).show(); Toast.makeText(getApplicationContext(), "授权失败,无法下载最新App", Toast.LENGTH_SHORT).show();
} }
} else {
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
} }
} }
@Override
public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) {
Log.d(TAG, "授权成功");
}
@Override
public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {
Toast.makeText(this, "用户授权失败", Toast.LENGTH_SHORT).show();
if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
new AppSettingsDialog.Builder(this).
setTitle("需要权限")
.setRationale("如果没有这些权限,此应用程序可能无法正常工作,是否打开设置修改该应用权限")
.build().show();
}
}
@Override @Override
public boolean dispatchKeyEvent(KeyEvent event) { public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) { if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
......
...@@ -71,8 +71,8 @@ public class WelcomeActivity extends BaseActivity<CommonPresenter> { ...@@ -71,8 +71,8 @@ public class WelcomeActivity extends BaseActivity<CommonPresenter> {
if (appConfig == null) { if (appConfig == null) {
if (!NetworkUtil.isNetworkAvailable(getApplicationContext())) { if (!NetworkUtil.isNetworkAvailable(getApplicationContext())) {
Toast.makeText(getApplicationContext(), "网络异常,im初始化失败,请退出重进", Toast.LENGTH_SHORT).show(); Toast.makeText(getApplicationContext(), "网络异常,im初始化失败,请退出重进", Toast.LENGTH_SHORT).show();
return;
} }
return;
} else { } else {
isImInitOk = true; isImInitOk = true;
} }
......
This diff is collapsed.
package com.ruiwenliu.wrapper.base;
import android.os.Bundle;
import com.ruiwenliu.wrapper.presenter.MvpPresenter;
public abstract class BaseLazyFragment<P extends MvpPresenter> extends BaseFragment<P> {
@Override
public int getViewLayout() {
return 0;
}
@Override
protected void initView(Bundle savedInstanceState) {
}
@Override
protected void loadData(Bundle savedInstanceState) {
}
@Override
public void onShowResult(int requestType, BaseBean result) {
}
}
...@@ -34,6 +34,8 @@ public class UserInfoBean extends BaseBean implements Serializable { ...@@ -34,6 +34,8 @@ public class UserInfoBean extends BaseBean implements Serializable {
private String icon ; private String icon ;
private String bigIcon ;
//用户id //用户id
private Integer userid; private Integer userid;
//imid //imid
...@@ -291,5 +293,13 @@ public class UserInfoBean extends BaseBean implements Serializable { ...@@ -291,5 +293,13 @@ public class UserInfoBean extends BaseBean implements Serializable {
public void setPositionName(String positionName) { public void setPositionName(String positionName) {
this.positionName = positionName; this.positionName = positionName;
} }
public String getBigIcon() {
return bigIcon;
}
public void setBigIcon(String bigIcon) {
this.bigIcon = bigIcon;
}
} }
} }
This diff is collapsed.
...@@ -54,8 +54,6 @@ dependencies { ...@@ -54,8 +54,6 @@ dependencies {
implementation 'top.zibin:Luban:1.1.3' implementation 'top.zibin:Luban:1.1.3'
implementation project(':plugin_member') implementation project(':plugin_member')
api project(':plugin_version') api project(':plugin_version')
//动态权限申请库
implementation 'pub.devrel:easypermissions:1.3.0'
implementation 'com.alibaba:fastjson:1.2.21' implementation 'com.alibaba:fastjson:1.2.21'
api project(':plugin_share') api project(':plugin_share')
api project(':plugin_coupon') api project(':plugin_coupon')
......
package com.rv.rvmine.personal; package com.rv.rvmine.personal;
import android.Manifest; import android.Manifest;
import android.annotation.SuppressLint;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
import android.text.TextUtils; import android.text.TextUtils;
...@@ -21,6 +23,7 @@ import com.frame.base.url.Constance; ...@@ -21,6 +23,7 @@ import com.frame.base.url.Constance;
import com.frame.rv.config.RvFrameConfig; import com.frame.rv.config.RvFrameConfig;
import com.ruiwenliu.wrapper.util.ViewHolder; import com.ruiwenliu.wrapper.util.ViewHolder;
import com.ruiwenliu.wrapper.util.glide.GlideManager; import com.ruiwenliu.wrapper.util.glide.GlideManager;
import com.ruiwenliu.wrapper.util.permission.RxPermission;
import com.rv.home.rv.module.ApiConfig; import com.rv.home.rv.module.ApiConfig;
import com.rv.component.dialog.PickerDialog; import com.rv.component.dialog.PickerDialog;
import com.rv.home.rv.module.ui.main.home.bean.ImageUploadBean; import com.rv.home.rv.module.ui.main.home.bean.ImageUploadBean;
...@@ -41,11 +44,10 @@ import java.util.Map; ...@@ -41,11 +44,10 @@ import java.util.Map;
import butterknife.BindView; import butterknife.BindView;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import butterknife.OnClick; import butterknife.OnClick;
import io.reactivex.functions.Consumer;
import okhttp3.MediaType; import okhttp3.MediaType;
import okhttp3.MultipartBody; import okhttp3.MultipartBody;
import okhttp3.RequestBody; import okhttp3.RequestBody;
import pub.devrel.easypermissions.AppSettingsDialog;
import pub.devrel.easypermissions.EasyPermissions;
import top.zibin.luban.Luban; import top.zibin.luban.Luban;
import top.zibin.luban.OnCompressListener; import top.zibin.luban.OnCompressListener;
...@@ -53,7 +55,7 @@ import top.zibin.luban.OnCompressListener; ...@@ -53,7 +55,7 @@ import top.zibin.luban.OnCompressListener;
* 实名认证 * 实名认证
*/ */
@Route(path = Constance.ACTIVITY_URL_IDCARDCERTIFICATION) @Route(path = Constance.ACTIVITY_URL_IDCARDCERTIFICATION)
public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresenter> implements EasyPermissions.PermissionCallbacks { public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresenter> {
@BindView(R2.id.et_name) @BindView(R2.id.et_name)
EditText etName; EditText etName;
...@@ -235,70 +237,43 @@ public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresen ...@@ -235,70 +237,43 @@ public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresen
}.show(); }.show();
} }
/** @SuppressLint("CheckResult")
* 打开相机和相册
*
* @param type 1、相机2、相册
* <p>
* 此处方法不奏效
*/
// @SuppressLint("CheckResult")
// private void processPicker(final int type) {
// /**
// * 6.0以上手机做权限处理
// */
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
// new RxPermission(mActivity).request(
// new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
// Manifest.permission.CAMERA}).subscribe(new Consumer<Boolean>() {
// @Override
// public void accept(Boolean aBoolean) throws Exception {
// if (aBoolean == true) {
// switch (type) {
// case 1001:
// mPresenter.openCamera(false);
// break;
// case 1002:
// mPresenter.openAlbum(false);
// break;
// }
//
// }
// }
// });
// } else {
// switch (type) {
// case 1001:
// mPresenter.openCamera(false);
// break;
// case 1002:
// mPresenter.openAlbum(false);
// break;
// }
// }
// }
private String[] cameraPermissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE};
private void processPicker() { private void processPicker() {
if (!EasyPermissions.hasPermissions(this, cameraPermissions)) { /**
EasyPermissions.requestPermissions(this, "拍照需要此权限,否则无法正常使用", 1, cameraPermissions); * 6.0以上手机做权限处理
return; */
} if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
switch (typeCamera) { new RxPermission(mActivity).request(
case 1001: Manifest.permission.WRITE_EXTERNAL_STORAGE,
mPresenter.openCamera(false); Manifest.permission.CAMERA).subscribe(new Consumer<Boolean>() {
break; @Override
case 1002: public void accept(Boolean aBoolean) throws Exception {
mPresenter.openAlbum(false); if (aBoolean == true) {
break; switch (typeCamera) {
case 1001:
mPresenter.openCamera(false);
break;
case 1002:
mPresenter.openAlbum(false);
break;
}
} else {
Toast.makeText(getApplicationContext(), "用户授权失败", Toast.LENGTH_SHORT).show();
}
}
});
} else {
switch (typeCamera) {
case 1001:
mPresenter.openCamera(false);
break;
case 1002:
mPresenter.openAlbum(false);
break;
}
} }
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
} }
/** /**
...@@ -351,23 +326,6 @@ public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresen ...@@ -351,23 +326,6 @@ public class IDCardCertificationActivity extends BaseStatusActivity<PickerPresen
return headMap; return headMap;
} }
@Override
public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) {
processPicker();
}
@Override
public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {
Toast.makeText(this, "用户授权失败", Toast.LENGTH_SHORT).show();
if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
new AppSettingsDialog.Builder(this).
setTitle("需要权限")
.setRationale("如果没有这些权限,此应用程序可能无法正常工作,是否打开设置修改该应用权限")
.build().show();
}
}
private class Verified { private class Verified {
private String name; private String name;
private String idNumber; private String idNumber;
......
...@@ -63,7 +63,6 @@ dependencies { ...@@ -63,7 +63,6 @@ dependencies {
implementation "com.google.code.gson:gson:$rootProject.ext.gsonVersion" implementation "com.google.code.gson:gson:$rootProject.ext.gsonVersion"
implementation 'cc.aoeiuv020:imaging:1.0' implementation 'cc.aoeiuv020:imaging:1.0'
implementation 'com.android.support:design:28.0.0' implementation 'com.android.support:design:28.0.0'
implementation 'pub.devrel:easypermissions:1.3.0'
implementation 'top.zibin:Luban:1.1.3' implementation 'top.zibin:Luban:1.1.3'
// 定制的jitsi, // 定制的jitsi,
api files('libs/jitsi-meet-sdk-1.16.0-2.aar') api files('libs/jitsi-meet-sdk-1.16.0-2.aar')
......
...@@ -4,6 +4,7 @@ import android.Manifest; ...@@ -4,6 +4,7 @@ import android.Manifest;
import android.app.Dialog; import android.app.Dialog;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.support.annotation.NonNull; import android.support.annotation.NonNull;
...@@ -29,6 +30,7 @@ import android.widget.Toast; ...@@ -29,6 +30,7 @@ import android.widget.Toast;
import com.ruiwenliu.wrapper.base.BaseBean; import com.ruiwenliu.wrapper.base.BaseBean;
import com.ruiwenliu.wrapper.base.BaseStatusActivity; import com.ruiwenliu.wrapper.base.BaseStatusActivity;
import com.ruiwenliu.wrapper.base.presenter.CommonPresenter; import com.ruiwenliu.wrapper.base.presenter.CommonPresenter;
import com.ruiwenliu.wrapper.util.permission.RxPermission;
import com.ruiwenliu.wrapper.weight.TitleView; import com.ruiwenliu.wrapper.weight.TitleView;
import com.rv.im.adapter.ChatContentAdapter; import com.rv.im.adapter.ChatContentAdapter;
import com.rv.im.audio.IMRecordController; import com.rv.im.audio.IMRecordController;
...@@ -55,10 +57,7 @@ import java.io.File; ...@@ -55,10 +57,7 @@ import java.io.File;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import pub.devrel.easypermissions.AppSettingsDialog; public class ChatActivity extends BaseStatusActivity<CommonPresenter> implements IChatView, ChatMessageListener, View.OnClickListener, RecordListener {
import pub.devrel.easypermissions.EasyPermissions;
public class ChatActivity extends BaseStatusActivity<CommonPresenter> implements EasyPermissions.PermissionCallbacks, IChatView, ChatMessageListener, View.OnClickListener, RecordListener {
private ImageButton voiceImgBtn; private ImageButton voiceImgBtn;
private ImageButton ibKeyword; private ImageButton ibKeyword;
...@@ -84,9 +83,6 @@ public class ChatActivity extends BaseStatusActivity<CommonPresenter> implements ...@@ -84,9 +83,6 @@ public class ChatActivity extends BaseStatusActivity<CommonPresenter> implements
private int startPosition; private int startPosition;
private int endPosition; private int endPosition;
private String[] recordPermissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.RECORD_AUDIO, Manifest.permission.READ_EXTERNAL_STORAGE};
private String[] callPermissions = {Manifest.permission.RECORD_AUDIO, Manifest.permission.CALL_PHONE, Manifest.permission.CAMERA};
private ChatContentAdapter.OnClickItemListener clickItemListener = new ChatContentAdapter.OnClickItemListener() { private ChatContentAdapter.OnClickItemListener clickItemListener = new ChatContentAdapter.OnClickItemListener() {
@Override @Override
public void onClick(int resId, ChatMessage message) { public void onClick(int resId, ChatMessage message) {
...@@ -320,17 +316,34 @@ public class ChatActivity extends BaseStatusActivity<CommonPresenter> implements ...@@ -320,17 +316,34 @@ public class ChatActivity extends BaseStatusActivity<CommonPresenter> implements
isCamera = true; isCamera = true;
presenter.clickPicPicker(isCamera); presenter.clickPicPicker(isCamera);
} else if (id == R.id.voice_img_btn) { } else if (id == R.id.voice_img_btn) {
// 判断是否有录音与储存读写的权限
if (!EasyPermissions.hasPermissions(getApplicationContext(), recordPermissions)) { /**
EasyPermissions.requestPermissions(ChatActivity.this, "录音需要此权限,否则无法正常使用", REQUEST_PERMISSION_AUDIO, recordPermissions); * 6.0以上手机做权限处理
return; */
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
new RxPermission(mActivity).request(
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.RECORD_AUDIO,
Manifest.permission.READ_EXTERNAL_STORAGE).subscribe(aBoolean -> {
if (aBoolean == true) {
changeChatFaceView(false);
chatEdit.setVisibility(View.GONE);
recordBtn.setVisibility(View.VISIBLE);
ibKeyword.setVisibility(View.VISIBLE);
voiceImgBtn.setVisibility(View.GONE);
closeKeyboard();
} else {
Toast.makeText(getApplicationContext(), "用户授权失败", Toast.LENGTH_SHORT).show();
}
});
} else {
changeChatFaceView(false);
chatEdit.setVisibility(View.GONE);
recordBtn.setVisibility(View.VISIBLE);
ibKeyword.setVisibility(View.VISIBLE);
voiceImgBtn.setVisibility(View.GONE);
closeKeyboard();
} }
changeChatFaceView(false);
chatEdit.setVisibility(View.GONE);
recordBtn.setVisibility(View.VISIBLE);
ibKeyword.setVisibility(View.VISIBLE);
voiceImgBtn.setVisibility(View.GONE);
closeKeyboard();
} else if (id == R.id.ib_keyword) { } else if (id == R.id.ib_keyword) {
changeChatFaceView(false); changeChatFaceView(false);
chatEdit.setVisibility(View.VISIBLE); chatEdit.setVisibility(View.VISIBLE);
...@@ -342,18 +355,37 @@ public class ChatActivity extends BaseStatusActivity<CommonPresenter> implements ...@@ -342,18 +355,37 @@ public class ChatActivity extends BaseStatusActivity<CommonPresenter> implements
presenter.clickFile(); presenter.clickFile();
} else if (id == R.id.tv_vilte) { } else if (id == R.id.tv_vilte) {
callType = 1; callType = 1;
if (!EasyPermissions.hasPermissions(getApplicationContext(), callPermissions)) {
EasyPermissions.requestPermissions(ChatActivity.this, "通话需要此权限,否则无法正常使用", REQUEST_PERMISSION_CALL, recordPermissions); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
return; new RxPermission(mActivity).request(
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.RECORD_AUDIO,
Manifest.permission.READ_EXTERNAL_STORAGE).subscribe(aBoolean -> {
if (aBoolean == true) {
presenter.realDial(callType, null);
} else {
Toast.makeText(getApplicationContext(), "用户授权失败", Toast.LENGTH_SHORT).show();
}
});
} else {
presenter.realDial(callType, null);
} }
presenter.realDial(callType, null);
} else if (id == R.id.tv_video) { } else if (id == R.id.tv_video) {
callType = 2; callType = 2;
if (!EasyPermissions.hasPermissions(getApplicationContext(), callPermissions)) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
EasyPermissions.requestPermissions(ChatActivity.this, "通话需要此权限,否则无法正常使用", REQUEST_PERMISSION_CALL, recordPermissions); new RxPermission(mActivity).request(
return; Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.RECORD_AUDIO,
Manifest.permission.READ_EXTERNAL_STORAGE).subscribe(aBoolean -> {
if (aBoolean == true) {
presenter.realDial(callType, null);
} else {
Toast.makeText(getApplicationContext(), "用户授权失败", Toast.LENGTH_SHORT).show();
}
});
} else {
presenter.realDial(callType, null);
} }
presenter.realDial(callType, null);
} else if (id == R.id.emotion_btn) { } else if (id == R.id.emotion_btn) {
if (isFaceShown()) {// 表情布局在显示,那么点击则是隐藏表情,显示键盘 if (isFaceShown()) {// 表情布局在显示,那么点击则是隐藏表情,显示键盘
// showKeyboard(); // showKeyboard();
...@@ -462,40 +494,6 @@ public class ChatActivity extends BaseStatusActivity<CommonPresenter> implements ...@@ -462,40 +494,6 @@ public class ChatActivity extends BaseStatusActivity<CommonPresenter> implements
private boolean isCamera = false; private boolean isCamera = false;
private InputMethodManager mInputManager; private InputMethodManager mInputManager;
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);
}
@Override
public void onPermissionsGranted(int requestCode, @NonNull List<String> perms) {
if (requestCode == REQUEST_PERMISSION_PHOTO) {
presenter.clickPicPicker(isCamera);
} else if (requestCode == REQUEST_PERMISSION_AUDIO) {
chatEdit.setVisibility(View.GONE);
recordBtn.setVisibility(View.VISIBLE);
ibKeyword.setVisibility(View.VISIBLE);
voiceImgBtn.setVisibility(View.GONE);
} else if (requestCode == REQUEST_PERMISSION_FILE) {
presenter.clickFile();
} else if (requestCode == REQUEST_PERMISSION_CALL) {
presenter.realDial(callType, null);
}
}
@Override
public void onPermissionsDenied(int requestCode, @NonNull List<String> perms) {
Toast.makeText(this, "用户授权失败", Toast.LENGTH_SHORT).show();
if (EasyPermissions.somePermissionPermanentlyDenied(this, perms)) {
new AppSettingsDialog.Builder(this).
setTitle("需要权限")
.setRationale("如果没有这些权限,此应用程序可能无法正常工作,是否打开设置修改该应用权限")
.build().show();
}
}
@Override @Override
public void onDestroy() { public void onDestroy() {
super.onDestroy(); super.onDestroy();
......
package com.rv.im; package com.rv.im;
import android.app.ActivityManager;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView; import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.Toast; import android.widget.Toast;
...@@ -20,21 +16,17 @@ import com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshLayout; ...@@ -20,21 +16,17 @@ import com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshLayout;
import com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshView; import com.ruiwenliu.wrapper.weight.refresh.SimpleRefreshView;
import com.rv.im.adapter.CustomerListAdapter; import com.rv.im.adapter.CustomerListAdapter;
import com.rv.im.bean.CustomersBean; import com.rv.im.bean.CustomersBean;
import com.rv.im.db.service.ChatConversationServiceImp;
import com.rv.im.db.service.ChatMessageServiceImp; import com.rv.im.db.service.ChatMessageServiceImp;
import com.rv.im.db.service.CustomerServiceImp; import com.rv.im.db.service.CustomerServiceImp;
import com.rv.im.db.service.ICustomerService; import com.rv.im.db.service.ICustomerService;
import com.rv.im.db.table.ChatConversation;
import com.rv.im.db.table.ChatMessage; import com.rv.im.db.table.ChatMessage;
import com.rv.im.db.table.Customer; import com.rv.im.db.table.Customer;
import com.rv.im.util.ServiceUtils; import com.rv.im.util.ServiceUtils;
import com.rv.im.xmpp.ListenerManager; import com.rv.im.xmpp.ListenerManager;
import com.rv.im.xmpp.listener.AuthStateListener;
import com.rv.im.xmpp.listener.ChatMessageListener; import com.rv.im.xmpp.listener.ChatMessageListener;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.Iterator;
import java.util.List; import java.util.List;
public class CustomerListActivity extends BaseStatusActivity<CommonPresenter> implements SimpleRefreshLayout.OnSimpleRefreshListener, ChatMessageListener { public class CustomerListActivity extends BaseStatusActivity<CommonPresenter> implements SimpleRefreshLayout.OnSimpleRefreshListener, ChatMessageListener {
......
package com.rv.im.mvp.presenter; package com.rv.im.mvp.presenter;
import android.Manifest; import android.Manifest;
import android.annotation.SuppressLint;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
...@@ -11,7 +12,9 @@ import android.provider.MediaStore; ...@@ -11,7 +12,9 @@ import android.provider.MediaStore;
import android.support.v4.content.FileProvider; import android.support.v4.content.FileProvider;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.widget.Toast;
import com.ruiwenliu.wrapper.util.permission.RxPermission;
import com.rv.im.Constants; import com.rv.im.Constants;
import com.rv.im.ImSetting; import com.rv.im.ImSetting;
import com.rv.im.call.Jitsi_pre; import com.rv.im.call.Jitsi_pre;
...@@ -34,7 +37,6 @@ import java.util.Arrays; ...@@ -34,7 +37,6 @@ import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import pub.devrel.easypermissions.EasyPermissions;
import top.zibin.luban.Luban; import top.zibin.luban.Luban;
import top.zibin.luban.OnCompressListener; import top.zibin.luban.OnCompressListener;
...@@ -79,16 +81,31 @@ public class ChatPresenterImp implements IChatPresenter { ...@@ -79,16 +81,31 @@ public class ChatPresenterImp implements IChatPresenter {
sendMessage(message); sendMessage(message);
} }
@SuppressLint("CheckResult")
@Override @Override
public void clickPicPicker(boolean isCamera) { public void clickPicPicker(boolean isCamera) {
if (!EasyPermissions.hasPermissions(weakReference.get(), cameraPermissions)) {
EasyPermissions.requestPermissions((Activity) weakReference.get(), "拍照需要此权限,否则无法正常使用", IChatView.REQUEST_PERMISSION_PHOTO, cameraPermissions); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
return; new RxPermission((Activity) weakReference.get()).request(
} Manifest.permission.WRITE_EXTERNAL_STORAGE,
if (isCamera) { Manifest.permission.CAMERA,
clickCamera(); Manifest.permission.READ_EXTERNAL_STORAGE).subscribe(aBoolean -> {
if (aBoolean == true) {
if (isCamera) {
clickCamera();
} else {
openAlbum();
}
} else {
Toast.makeText(weakReference.get(), "用户授权失败", Toast.LENGTH_SHORT).show();
}
});
} else { } else {
openAlbum(); if (isCamera) {
clickCamera();
} else {
openAlbum();
}
} }
} }
...@@ -167,7 +184,7 @@ public class ChatPresenterImp implements IChatPresenter { ...@@ -167,7 +184,7 @@ public class ChatPresenterImp implements IChatPresenter {
if (!TextUtils.isEmpty(meetUrl)) { if (!TextUtils.isEmpty(meetUrl)) {
intent.putExtra("meetUrl", meetUrl); intent.putExtra("meetUrl", meetUrl);
} }
((Activity) weakReference.get()).startActivity(intent); weakReference.get().startActivity(intent);
} }
private void sendMessage(ChatMessage message) { private void sendMessage(ChatMessage message) {
...@@ -307,16 +324,25 @@ public class ChatPresenterImp implements IChatPresenter { ...@@ -307,16 +324,25 @@ public class ChatPresenterImp implements IChatPresenter {
sendMessage(message); sendMessage(message);
} }
@SuppressLint("CheckResult")
@Override @Override
public void clickFile() { public void clickFile() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
new RxPermission((Activity) weakReference.get()).request(
if (!EasyPermissions.hasPermissions(weakReference.get(), cameraPermissions)) { Manifest.permission.WRITE_EXTERNAL_STORAGE,
EasyPermissions.requestPermissions((Activity) weakReference.get(), "拍照需要此权限,否则无法正常使用", IChatView.REQUEST_PERMISSION_FILE, choiceFilePermissions); Manifest.permission.READ_EXTERNAL_STORAGE).subscribe(aBoolean -> {
return; if (aBoolean == true) {
showFileChoiceDialog();
} else {
Toast.makeText(weakReference.get(), "用户授权失败", Toast.LENGTH_SHORT).show();
}
});
} else {
showFileChoiceDialog();
} }
}
private void showFileChoiceDialog() {
SelectFileDialog dialog = new SelectFileDialog(weakReference.get(), new SelectFileDialog.OptionFileListener() { SelectFileDialog dialog = new SelectFileDialog(weakReference.get(), new SelectFileDialog.OptionFileListener() {
@Override @Override
public void option(List<File> files) { public void option(List<File> files) {
......
...@@ -84,8 +84,8 @@ public class LoginView extends LinearLayout { ...@@ -84,8 +84,8 @@ public class LoginView extends LinearLayout {
SpannableStringBuilder bugBuilder = new SpannableStringBuilder(info.getBuyCount() + "\n 购买记录 (次)") ; SpannableStringBuilder bugBuilder = new SpannableStringBuilder(info.getBuyCount() + "\n 购买记录 (次)") ;
bugBuilder.setSpan(new TextAppearanceSpan(null, Typeface.NORMAL, DisplayUtil.sp2px(getContext(), 18), null, null), 0, String.valueOf(info.getBuyCount()).length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE); bugBuilder.setSpan(new TextAppearanceSpan(null, Typeface.NORMAL, DisplayUtil.sp2px(getContext(), 18), null, null), 0, String.valueOf(info.getBuyCount()).length(), Spanned.SPAN_EXCLUSIVE_INCLUSIVE);
tvPurchaseRecord.setText(bugBuilder); tvPurchaseRecord.setText(bugBuilder);
if (!TextUtils.isEmpty(info.getIcon())) if (!TextUtils.isEmpty(info.getBigIcon()))
GlideManager.getInstance(getContext()).loadImage(info.getIcon(), ivMemberLevel); GlideManager.getInstance(getContext()).loadImage(info.getBigIcon(), ivMemberLevel);
} }
} }
} }
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
android:layout_width="@dimen/size_60" android:layout_width="@dimen/size_60"
android:layout_height="@dimen/size_60" android:layout_height="@dimen/size_60"
android:layout_alignParentRight="true" android:layout_alignParentRight="true"
android:layout_marginRight="@dimen/dp_40" /> android:layout_marginRight="@dimen/size_30" />
</RelativeLayout> </RelativeLayout>
......
...@@ -71,16 +71,17 @@ ...@@ -71,16 +71,17 @@
android:layout_marginLeft="@dimen/size_20" android:layout_marginLeft="@dimen/size_20"
android:layout_marginRight="@dimen/size_20" android:layout_marginRight="@dimen/size_20"
android:textColor="#666666" android:textColor="#666666"
android:layout_marginBottom="13dp"
android:textSize="@dimen/dp_10" /> android:textSize="@dimen/dp_10" />
<Button <Button
android:visibility="gone"
android:id="@+id/btn_buy" android:id="@+id/btn_buy"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/dp_40" android:layout_height="@dimen/dp_40"
android:layout_marginLeft="@dimen/size_20" android:layout_marginLeft="@dimen/size_20"
android:layout_marginTop="13dp" android:layout_marginTop="13dp"
android:layout_marginRight="@dimen/size_20" android:layout_marginRight="@dimen/size_20"
android:layout_marginBottom="13dp"
android:background="@drawable/shape_rv_bg_dark_yellow" android:background="@drawable/shape_rv_bg_dark_yellow"
android:gravity="center" android:gravity="center"
android:textColor="@color/white" android:textColor="@color/white"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment