Commit c639a210 by chengfengpiaopiao

增加H5调用相册更改头像

parent 893c9986
...@@ -27,34 +27,6 @@ ...@@ -27,34 +27,6 @@
</value> </value>
</option> </option>
</component> </component>
<component name="ProjectInspectionProfilesVisibleTreeState">
<entry key="Project Default">
<profile-state>
<expanded-state>
<State>
<id />
</State>
<State>
<id>Android</id>
</State>
<State>
<id>Android &gt; Lint &gt; Correctness</id>
</State>
<State>
<id>Java</id>
</State>
<State>
<id>Java language level migration aidsJava</id>
</State>
</expanded-state>
<selected-state>
<State>
<id>Android</id>
</State>
</selected-state>
</profile-state>
</entry>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" /> <output url="file://$PROJECT_DIR$/build/classes" />
</component> </component>
......
...@@ -26,6 +26,16 @@ android { ...@@ -26,6 +26,16 @@ android {
multiDexEnabled true //方法数超过65535 multiDexEnabled true //方法数超过65535
} }
dexOptions {
javaMaxHeapSize "4g"
}
lintOptions {
checkReleaseBuilds false
// Or, if you prefer, you can continue to check for errors in release builds,
// but continue the build even when errors are found:
abortOnError false
}
//配置keystore签名 //配置keystore签名
signingConfigs { signingConfigs {
...@@ -69,6 +79,14 @@ android { ...@@ -69,6 +79,14 @@ android {
} }
} }
sourceSets {
main() {
jniLibs.srcDirs = ['libs']
}
}
// android.applicationVariants.all { variant -> // android.applicationVariants.all { variant ->
// variant.outputs.each { output -> // variant.outputs.each { output ->
// def outputFile = output.outputFile // def outputFile = output.outputFile
......
package com.maile.jingcai.module.api;
import com.maile.jingcai.module.WrapperRspEntity;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Query;
import rx.Observable;
/**
* Created by chengfeng-piaopiao on 2017/11/23.
*/
public interface BusinessApiService {
// @GET("upAvatar")
// Observable<WrapperRspEntity<String>> upUserHeadImage( @Query("uid") String token , @Query("userface") String userface);
@FormUrlEncoded
@POST("testUpAvatar")
Observable<WrapperRspEntity<String>> upUserHeadImage(@Field("uid") String token,
@Field("base") String userface);
}
package com.maile.jingcai.view.activity; package com.maile.jingcai.view.activity;
import android.Manifest;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.Rect; import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.BitmapDrawable;
...@@ -96,6 +98,7 @@ public class ImageCropHeadActivity extends Activity{ ...@@ -96,6 +98,7 @@ public class ImageCropHeadActivity extends Activity{
selector.origin(mSelectPath); selector.origin(mSelectPath);
//请求图片库,并且在onActivityResult中进行返回 //请求图片库,并且在onActivityResult中进行返回
selector.start(ImageCropHeadActivity.this, REQUEST_IMAGE); selector.start(ImageCropHeadActivity.this, REQUEST_IMAGE);
//requestPermission( Manifest.permission.WRITE_CONTACTS,"夺宝竞猜 正在尝试 拍照、录像和闪光灯",REQUEST_STORAGE_READ_ACCESS_PERMISSION);
} }
...@@ -117,6 +120,15 @@ public class ImageCropHeadActivity extends Activity{ ...@@ -117,6 +120,15 @@ public class ImageCropHeadActivity extends Activity{
} }
} }
@Override
public void onRequestPermissionsResult(int permsRequestCode, String[] permissions, int[] grantResults){
switch(permsRequestCode){
case REQUEST_STORAGE_READ_ACCESS_PERMISSION:
break;
}
}
private void createTempFile() { private void createTempFile() {
......
...@@ -2,6 +2,7 @@ package com.maile.jingcai.view.activity; ...@@ -2,6 +2,7 @@ package com.maile.jingcai.view.activity;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri; import android.net.Uri;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
...@@ -11,6 +12,7 @@ import android.support.v4.app.FragmentActivity; ...@@ -11,6 +12,7 @@ import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager;
import android.text.TextUtils;
import android.util.Log; import android.util.Log;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.View; import android.view.View;
...@@ -24,8 +26,13 @@ import com.maile.jingcai.R; ...@@ -24,8 +26,13 @@ import com.maile.jingcai.R;
import com.maile.jingcai.base.Constant; import com.maile.jingcai.base.Constant;
import com.maile.jingcai.commponent.PicModeSelectView; import com.maile.jingcai.commponent.PicModeSelectView;
import com.maile.jingcai.commponent.ToastTopBar; import com.maile.jingcai.commponent.ToastTopBar;
import com.maile.jingcai.module.WrapperRspEntity;
import com.maile.jingcai.module.api.BusinessApiService;
import com.maile.jingcai.module.entity.TabEntity; import com.maile.jingcai.module.entity.TabEntity;
import com.maile.jingcai.module.net.RetrofitManager;
import com.maile.jingcai.util.CameraUtil; import com.maile.jingcai.util.CameraUtil;
import com.maile.jingcai.util.DrawUtil;
import com.maile.jingcai.util.ImageUtils;
import com.maile.jingcai.util.NetUtils; import com.maile.jingcai.util.NetUtils;
import com.maile.jingcai.util.PublicUtils; import com.maile.jingcai.util.PublicUtils;
import com.maile.jingcai.util.preferences.IPreferencesIds; import com.maile.jingcai.util.preferences.IPreferencesIds;
...@@ -42,6 +49,10 @@ import java.util.Random; ...@@ -42,6 +49,10 @@ import java.util.Random;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import butterknife.InjectView; import butterknife.InjectView;
import butterknife.OnClick; import butterknife.OnClick;
import rx.Observer;
import rx.Scheduler;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
/** /**
* Created by chengfeng-piaopiao on 2017/11/8. * Created by chengfeng-piaopiao on 2017/11/8.
...@@ -87,7 +98,7 @@ public class MainActivity extends FragmentActivity implements IWebView { ...@@ -87,7 +98,7 @@ public class MainActivity extends FragmentActivity implements IWebView {
private WebView mWebView; private WebView mWebView;
private String mWebURL; private String mWebURL;
private String[] urls = {"http://h5.test.7peng.cn/","http://192.168.1.250:81/shop","http://h5.test.7peng.cn/profile.html"}; private String[] urls = {"http://h5.test.7peng.cn/","http://192.168.1.250:81/shop","http://h5.test.7peng.cn/profile.html"};
private String uid;
@Override @Override
...@@ -256,22 +267,15 @@ public class MainActivity extends FragmentActivity implements IWebView { ...@@ -256,22 +267,15 @@ public class MainActivity extends FragmentActivity implements IWebView {
case IMAGE_HEAD: case IMAGE_HEAD:
//回调设置头像 //回调设置头像
if (null != data) { if (null != data) {
if (data.getBooleanExtra(CLICK_BACK_IMAGE, false) == true) { if (data.getBooleanExtra(CLICK_BACK_IMAGE, false) == true) {
mToastBar.showErrorBar(R.string.user_info_upload_head_fail); mToastBar.showErrorBar(R.string.user_info_upload_head_fail);
return; return;
} }
/* Bundle bundle = data.getExtras();
Bitmap bitmap = (Bitmap) bundle.getParcelable(sendToEditBitMapStr);*/
//重新设置头像 //重新设置头像
/*mHeaderView.setImageBitmap(bitmap);*/
mBitmapStr = data.getStringExtra(sendToEditBitMapStr); mBitmapStr = data.getStringExtra(sendToEditBitMapStr);
if (null != mBitmapStr) { if (null != mBitmapStr) {
/* mImageUri = ImageUtils.getImageUri(mBitmapStr);//从文件中读出uri updateHeadImage();
mBitmap = ImageUtils.getBitmap(mImageUri, EditUserInfoActivity.this);
mHeaderView.setImageBitmap(mBitmap);*/
// updateHeadImage();
} }
} }
break; break;
...@@ -322,10 +326,53 @@ public class MainActivity extends FragmentActivity implements IWebView { ...@@ -322,10 +326,53 @@ public class MainActivity extends FragmentActivity implements IWebView {
} }
} }
private void updateHeadImage() {
Bitmap bitmap = CameraUtil.decodeUriAsBitmap(Uri.fromFile(new File(Constant.ACCOUNT_CROP_DIR, CameraUtil.TEMP_PHOTO_FILE_NAME)), MainActivity.this);
if (bitmap == null) {
mToastBar.showErrorBar(R.string.user_info_upload_head_fail);
return;
}
bitmap = ImageUtils.zoomImage(bitmap, DrawUtil.dip2px(85), DrawUtil.dip2px(85)); // 防止图片太大,我的页面头像大小
//mHeaderView.setImageBitmap(bitmap);
// 上传到服务器
final String userFace = CameraUtil.imgToBase64(null, bitmap);
// PreferencesManager preferencesManager = PreferencesManager.getSharedPreference(getApplicationContext(),
// IPreferencesIds.DEFAULT_SHAREPREFERENCES_FILE,
// Context.MODE_PRIVATE);
// final String token = preferencesManager.getString(IPreferencesIds.TOKEN, "");
if(TextUtils.isEmpty(uid)){
mToastBar.showErrorBar("用户id不能为空");
return;
}
RetrofitManager.getInstance().createReq(BusinessApiService.class).upUserHeadImage(uid,userFace).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<WrapperRspEntity<String>>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
mToastBar.showErrorBar(R.string.user_info_upload_head_server_fail);
}
@Override
public void onNext(WrapperRspEntity<String> userWrapperRspEntity) {
//webview调用H5的刷新方法
mWebView.loadUrl("javascript:handleAvatarSuccess()");
}});
}
@Override @Override
public void editUserImage(WebView webView, String webURL) { public void editUserImage(WebView webView, String webURL,String uid) {
this.mWebView = webView; this.mWebView = webView;
this.mWebURL = webURL; this.mWebURL = webURL;
this.uid = uid;
mToastBar.showErrorBar("正在拉起库");
/** /**
* 直接拉起相册库--》去除dialog * 直接拉起相册库--》去除dialog
*/ */
...@@ -335,8 +382,6 @@ public class MainActivity extends FragmentActivity implements IWebView { ...@@ -335,8 +382,6 @@ public class MainActivity extends FragmentActivity implements IWebView {
//mPicSelectView.show(true);拉起activity //mPicSelectView.show(true);拉起activity
Intent intent; Intent intent;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {//19版本 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {//19版本
/*intent = CameraUtil.selectImageUriAfterKikat();
startActivityForResult(intent, CameraUtil.SELECT_A_PICTURE_AFTER_KIKAT);*/
String savePath = Constant.SHARE_DIR + System.currentTimeMillis() + ".png"; String savePath = Constant.SHARE_DIR + System.currentTimeMillis() + ".png";
Intent intentHead = new Intent(MainActivity.this, ImageCropHeadActivity.class); Intent intentHead = new Intent(MainActivity.this, ImageCropHeadActivity.class);
......
...@@ -101,10 +101,10 @@ public class SimpleCardFragment extends BaseFragment { ...@@ -101,10 +101,10 @@ public class SimpleCardFragment extends BaseFragment {
if (isVisibleToUser) { if (isVisibleToUser) {
Log.i("tangwen", "onResume: " + mUrl); Log.i("tangwen", "onResume: " + mUrl);
if (mUrl.equals("http://192.168.1.250:81/shop") || mUrl.equals("http://h5.test.7peng.cn/profile.html")) { if (mUrl.equals("http://192.168.1.250:81/shop") || mUrl.equals("http://h5.test.7peng.cn/profile.html")) {
Log.i("tangwen", "onResume: " + "第二页"); //Log.i("tangwen", "onResume: " + "第二页");
mWebView.loadUrl(mUrl); mWebView.loadUrl(mUrl);
} }
Log.i("tangwen", "onResume: " + "其他页面"); // Log.i("tangwen", "onResume: " + "其他页面");
} }
} }
...@@ -212,6 +212,12 @@ public class SimpleCardFragment extends BaseFragment { ...@@ -212,6 +212,12 @@ public class SimpleCardFragment extends BaseFragment {
Log.i("ggg", "onPageFinished: " + "ggg"); Log.i("ggg", "onPageFinished: " + "ggg");
// new Handler().postDelayed(new Runnable(){
// public void run() {
// //mWebView.loadUrl("javascript:console.log('ggg'); (function(){localStorage.setItem(\"__token__\", '"+token+"');})();");
// mWebView.loadUrl("javascript:console.log('type:'+ typeof(window.h5AutoLogin));h5AutoLogin('"+token+"')");
// }
// }, 2000);
...@@ -268,8 +274,9 @@ public class SimpleCardFragment extends BaseFragment { ...@@ -268,8 +274,9 @@ public class SimpleCardFragment extends BaseFragment {
* @return 是否修改成功 * @return 是否修改成功
*/ */
@JavascriptInterface @JavascriptInterface
public void editUserHeadImage(){ public void editUserHeadImage(String uid){
mIWebView.editUserImage(mWebView,currentURL); Log.d("editUserHeadImage", "uid: " + uid);
mIWebView.editUserImage(mWebView,currentURL,uid);
} }
} }
......
...@@ -13,5 +13,5 @@ public interface IWebView { ...@@ -13,5 +13,5 @@ public interface IWebView {
* @param webURL 当前H5页面的URL * @param webURL 当前H5页面的URL
* @return 头像是否修改成功 * @return 头像是否修改成功
*/ */
void editUserImage(WebView webView,String webURL); void editUserImage(WebView webView,String webURL,String uid);
} }
...@@ -135,7 +135,7 @@ public class LoginMainLayer extends RelativeLayout { ...@@ -135,7 +135,7 @@ public class LoginMainLayer extends RelativeLayout {
*/ */
public void startAnimToLogin() { public void startAnimToLogin() {
llLoginContainer.setVisibility(VISIBLE); llLoginContainer.setVisibility(VISIBLE);
AlphaAnimation alphaAnimIn = new AlphaAnimation(0, 1); AlphaAnimation alphaAnimIn = new AlphaAnimation(1, 1);
alphaAnimIn.setDuration(DURATION_ANIM_IN_LOGIN); alphaAnimIn.setDuration(DURATION_ANIM_IN_LOGIN);
alphaAnimIn.setFillAfter(true); alphaAnimIn.setFillAfter(true);
llLoginContainer.startAnimation(alphaAnimIn); llLoginContainer.startAnimation(alphaAnimIn);
......
...@@ -24,4 +24,5 @@ ...@@ -24,4 +24,5 @@
<string name="dialog_select_btn_cancel">取消</string> <string name="dialog_select_btn_cancel">取消</string>
<string name="user_info_upload_head_success">上传头像成功</string> <string name="user_info_upload_head_success">上传头像成功</string>
<string name="user_info_upload_head_fail">取消头像设置</string> <string name="user_info_upload_head_fail">取消头像设置</string>
<string name="user_info_upload_head_server_fail">头像上传失败</string>
</resources> </resources>
...@@ -2,13 +2,13 @@ apply plugin: 'com.android.library' ...@@ -2,13 +2,13 @@ apply plugin: 'com.android.library'
android { android {
compileSdkVersion 23 compileSdkVersion 23
buildToolsVersion "23.0.2" buildToolsVersion "23.0.3"
defaultConfig { defaultConfig {
minSdkVersion 12 minSdkVersion 16
targetSdkVersion 23 targetSdkVersion 23
versionCode 1 versionCode 1
versionName "1.1" versionName "1.0"
} }
buildTypes { buildTypes {
release { release {
...@@ -22,6 +22,6 @@ android { ...@@ -22,6 +22,6 @@ android {
dependencies { dependencies {
compile fileTree(dir: 'libs', include: ['*.jar']) compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:23.0.0' compile 'com.android.support:appcompat-v7:25.0.0'
compile 'com.squareup.picasso:picasso:2.4.0' compile 'com.squareup.picasso:picasso:2.4.0'
} }
...@@ -2,10 +2,13 @@ package me.nereo.multi_image_selector; ...@@ -2,10 +2,13 @@ package me.nereo.multi_image_selector;
import android.Manifest; import android.Manifest;
import android.app.Activity; import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.os.Build; import android.os.Build;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
import android.support.v4.content.ContextCompat; import android.support.v4.content.ContextCompat;
import android.widget.Toast; import android.widget.Toast;
...@@ -91,6 +94,8 @@ public class MultiImageSelector { ...@@ -91,6 +94,8 @@ public class MultiImageSelector {
} }
} }
private boolean hasPermission(Context context){ private boolean hasPermission(Context context){
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN){ if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN){
// Permission was added in API Level 16 // Permission was added in API Level 16
......
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 sign in to comment