Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
唐文
/
AiyoZhuaWaWa
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
c639a210
authored
Nov 23, 2017
by
chengfengpiaopiao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
增加H5调用相册更改头像
parent
893c9986
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
135 additions
and
50 deletions
.idea/misc.xml
app/build.gradle
app/src/main/java/com/maile/jingcai/module/api/BusinessApiService.java
app/src/main/java/com/maile/jingcai/view/activity/ImageCropHeadActivity.java
app/src/main/java/com/maile/jingcai/view/activity/MainActivity.java
app/src/main/java/com/maile/jingcai/view/fragment/SimpleCardFragment.java
app/src/main/java/com/maile/jingcai/view/iview/IWebView.java
app/src/main/java/com/maile/jingcai/view/layer/LoginMainLayer.java
app/src/main/res/values/strings.xml
multi-image-selector/build.gradle
multi-image-selector/src/main/java/me/nereo/multi_image_selector/MultiImageSelector.java
.idea/misc.xml
View file @
c639a210
...
...
@@ -27,34 +27,6 @@
</value>
</option>
</component>
<component
name=
"ProjectInspectionProfilesVisibleTreeState"
>
<entry
key=
"Project Default"
>
<profile-state>
<expanded-state>
<State>
<id
/>
</State>
<State>
<id>
Android
</id>
</State>
<State>
<id>
Android
>
Lint
>
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"
>
<output
url=
"file://$PROJECT_DIR$/build/classes"
/>
</component>
...
...
app/build.gradle
View file @
c639a210
...
...
@@ -26,6 +26,16 @@ android {
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签名
signingConfigs
{
...
...
@@ -69,6 +79,14 @@ android {
}
}
sourceSets
{
main
()
{
jniLibs
.
srcDirs
=
[
'libs'
]
}
}
// android.applicationVariants.all { variant ->
// variant.outputs.each { output ->
// def outputFile = output.outputFile
...
...
app/src/main/java/com/maile/jingcai/module/api/BusinessApiService.java
0 → 100644
View file @
c639a210
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
);
}
app/src/main/java/com/maile/jingcai/view/activity/ImageCropHeadActivity.java
View file @
c639a210
package
com
.
maile
.
jingcai
.
view
.
activity
;
import
android.Manifest
;
import
android.app.Activity
;
import
android.content.Context
;
import
android.content.DialogInterface
;
import
android.content.Intent
;
import
android.content.pm.PackageManager
;
import
android.graphics.Bitmap
;
import
android.graphics.Rect
;
import
android.graphics.drawable.BitmapDrawable
;
...
...
@@ -96,6 +98,7 @@ public class ImageCropHeadActivity extends Activity{
selector
.
origin
(
mSelectPath
);
//请求图片库,并且在onActivityResult中进行返回
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{
}
}
@Override
public
void
onRequestPermissionsResult
(
int
permsRequestCode
,
String
[]
permissions
,
int
[]
grantResults
){
switch
(
permsRequestCode
){
case
REQUEST_STORAGE_READ_ACCESS_PERMISSION:
break
;
}
}
private
void
createTempFile
()
{
...
...
app/src/main/java/com/maile/jingcai/view/activity/MainActivity.java
View file @
c639a210
...
...
@@ -2,6 +2,7 @@ package com.maile.jingcai.view.activity;
import
android.content.Context
;
import
android.content.Intent
;
import
android.graphics.Bitmap
;
import
android.net.Uri
;
import
android.os.Build
;
import
android.os.Bundle
;
...
...
@@ -11,6 +12,7 @@ import android.support.v4.app.FragmentActivity;
import
android.support.v4.app.FragmentManager
;
import
android.support.v4.app.FragmentPagerAdapter
;
import
android.support.v4.view.ViewPager
;
import
android.text.TextUtils
;
import
android.util.Log
;
import
android.view.KeyEvent
;
import
android.view.View
;
...
...
@@ -24,8 +26,13 @@ import com.maile.jingcai.R;
import
com.maile.jingcai.base.Constant
;
import
com.maile.jingcai.commponent.PicModeSelectView
;
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.net.RetrofitManager
;
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.PublicUtils
;
import
com.maile.jingcai.util.preferences.IPreferencesIds
;
...
...
@@ -42,6 +49,10 @@ import java.util.Random;
import
butterknife.ButterKnife
;
import
butterknife.InjectView
;
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.
...
...
@@ -87,7 +98,7 @@ public class MainActivity extends FragmentActivity implements IWebView {
private
WebView
mWebView
;
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
uid
;
@Override
...
...
@@ -256,22 +267,15 @@ public class MainActivity extends FragmentActivity implements IWebView {
case
IMAGE_HEAD:
//回调设置头像
if
(
null
!=
data
)
{
if
(
data
.
getBooleanExtra
(
CLICK_BACK_IMAGE
,
false
)
==
true
)
{
mToastBar
.
showErrorBar
(
R
.
string
.
user_info_upload_head_fail
);
return
;
}
/* Bundle bundle = data.getExtras();
Bitmap bitmap = (Bitmap) bundle.getParcelable(sendToEditBitMapStr);*/
//重新设置头像
/*mHeaderView.setImageBitmap(bitmap);*/
mBitmapStr
=
data
.
getStringExtra
(
sendToEditBitMapStr
);
if
(
null
!=
mBitmapStr
)
{
/* mImageUri = ImageUtils.getImageUri(mBitmapStr);//从文件中读出uri
mBitmap = ImageUtils.getBitmap(mImageUri, EditUserInfoActivity.this);
mHeaderView.setImageBitmap(mBitmap);*/
// updateHeadImage();
updateHeadImage
();
}
}
break
;
...
...
@@ -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
public
void
editUserImage
(
WebView
webView
,
String
webURL
)
{
public
void
editUserImage
(
WebView
webView
,
String
webURL
,
String
uid
)
{
this
.
mWebView
=
webView
;
this
.
mWebURL
=
webURL
;
this
.
uid
=
uid
;
mToastBar
.
showErrorBar
(
"正在拉起库"
);
/**
* 直接拉起相册库--》去除dialog
*/
...
...
@@ -335,8 +382,6 @@ public class MainActivity extends FragmentActivity implements IWebView {
//mPicSelectView.show(true);拉起activity
Intent
intent
;
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"
;
Intent
intentHead
=
new
Intent
(
MainActivity
.
this
,
ImageCropHeadActivity
.
class
);
...
...
app/src/main/java/com/maile/jingcai/view/fragment/SimpleCardFragment.java
View file @
c639a210
...
...
@@ -101,10 +101,10 @@ public class SimpleCardFragment extends BaseFragment {
if
(
isVisibleToUser
)
{
Log
.
i
(
"tangwen"
,
"onResume: "
+
mUrl
);
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
);
}
Log
.
i
(
"tangwen"
,
"onResume: "
+
"其他页面"
);
//
Log.i("tangwen", "onResume: " + "其他页面");
}
}
...
...
@@ -212,6 +212,12 @@ public class SimpleCardFragment extends BaseFragment {
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 {
* @return 是否修改成功
*/
@JavascriptInterface
public
void
editUserHeadImage
(){
mIWebView
.
editUserImage
(
mWebView
,
currentURL
);
public
void
editUserHeadImage
(
String
uid
){
Log
.
d
(
"editUserHeadImage"
,
"uid: "
+
uid
);
mIWebView
.
editUserImage
(
mWebView
,
currentURL
,
uid
);
}
}
...
...
app/src/main/java/com/maile/jingcai/view/iview/IWebView.java
View file @
c639a210
...
...
@@ -13,5 +13,5 @@ public interface IWebView {
* @param webURL 当前H5页面的URL
* @return 头像是否修改成功
*/
void
editUserImage
(
WebView
webView
,
String
webURL
);
void
editUserImage
(
WebView
webView
,
String
webURL
,
String
uid
);
}
app/src/main/java/com/maile/jingcai/view/layer/LoginMainLayer.java
View file @
c639a210
...
...
@@ -135,7 +135,7 @@ public class LoginMainLayer extends RelativeLayout {
*/
public
void
startAnimToLogin
()
{
llLoginContainer
.
setVisibility
(
VISIBLE
);
AlphaAnimation
alphaAnimIn
=
new
AlphaAnimation
(
0
,
1
);
AlphaAnimation
alphaAnimIn
=
new
AlphaAnimation
(
1
,
1
);
alphaAnimIn
.
setDuration
(
DURATION_ANIM_IN_LOGIN
);
alphaAnimIn
.
setFillAfter
(
true
);
llLoginContainer
.
startAnimation
(
alphaAnimIn
);
...
...
app/src/main/res/values/strings.xml
View file @
c639a210
...
...
@@ -24,4 +24,5 @@
<string
name=
"dialog_select_btn_cancel"
>
取消
</string>
<string
name=
"user_info_upload_head_success"
>
上传头像成功
</string>
<string
name=
"user_info_upload_head_fail"
>
取消头像设置
</string>
<string
name=
"user_info_upload_head_server_fail"
>
头像上传失败
</string>
</resources>
multi-image-selector/build.gradle
View file @
c639a210
...
...
@@ -2,13 +2,13 @@ apply plugin: 'com.android.library'
android
{
compileSdkVersion
23
buildToolsVersion
"23.0.
2
"
buildToolsVersion
"23.0.
3
"
defaultConfig
{
minSdkVersion
1
2
minSdkVersion
1
6
targetSdkVersion
23
versionCode
1
versionName
"1.
1
"
versionName
"1.
0
"
}
buildTypes
{
release
{
...
...
@@ -22,6 +22,6 @@ android {
dependencies
{
compile
fileTree
(
dir:
'libs'
,
include:
[
'*.jar'
])
compile
'com.android.support:appcompat-v7:2
3
.0.0'
compile
'com.android.support:appcompat-v7:2
5
.0.0'
compile
'com.squareup.picasso:picasso:2.4.0'
}
multi-image-selector/src/main/java/me/nereo/multi_image_selector/MultiImageSelector.java
View file @
c639a210
...
...
@@ -2,10 +2,13 @@ package me.nereo.multi_image_selector;
import
android.Manifest
;
import
android.app.Activity
;
import
android.app.AlertDialog
;
import
android.content.Context
;
import
android.content.DialogInterface
;
import
android.content.Intent
;
import
android.content.pm.PackageManager
;
import
android.os.Build
;
import
android.support.v4.app.ActivityCompat
;
import
android.support.v4.app.Fragment
;
import
android.support.v4.content.ContextCompat
;
import
android.widget.Toast
;
...
...
@@ -91,6 +94,8 @@ public class MultiImageSelector {
}
}
private
boolean
hasPermission
(
Context
context
){
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
JELLY_BEAN
){
// Permission was added in API Level 16
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment