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
b43cb00b
authored
Nov 24, 2017
by
chengfengpiaopiao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
相册摄像头权限6.0
parent
c639a210
Show whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
443 additions
and
10 deletions
.idea/modules.xml
app/build.gradle
app/src/main/AndroidManifest.xml
app/src/main/java/com/maile/jingcai/base/BaseApplication.java
app/src/main/java/com/maile/jingcai/util/PermissionUtils.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/res/values/arrays.xml
app/src/main/res/values/strings.xml
.idea/modules.xml
View file @
b43cb00b
...
...
@@ -2,9 +2,7 @@
<project
version=
"4"
>
<component
name=
"ProjectModuleManager"
>
<modules>
<module
fileurl=
"file://$PROJECT_DIR$/DuoBaoJingCai.iml"
filepath=
"$PROJECT_DIR$/DuoBaoJingCai.iml"
/>
<module
fileurl=
"file://$PROJECT_DIR$/DuoBaoJingCai2.iml"
filepath=
"$PROJECT_DIR$/DuoBaoJingCai2.iml"
/>
<module
fileurl=
"file://G:/Product/Android/DuoBaoJingCai/DuoBaoJingCai2.iml"
filepath=
"G:/Product/Android/DuoBaoJingCai/DuoBaoJingCai2.iml"
/>
<module
fileurl=
"file://$PROJECT_DIR$/app/app.iml"
filepath=
"$PROJECT_DIR$/app/app.iml"
/>
<module
fileurl=
"file://$PROJECT_DIR$/multi-image-selector/multi-image-selector.iml"
filepath=
"$PROJECT_DIR$/multi-image-selector/multi-image-selector.iml"
/>
</modules>
...
...
app/build.gradle
View file @
b43cb00b
...
...
@@ -105,6 +105,8 @@ dependencies {
exclude
group:
'com.android.support'
,
module:
'support-annotations'
})
compile
'com.android.support:appcompat-v7:25.0.0'
compile
"com.android.support:support-v13:23.1.0"
testCompile
'junit:junit:4.12'
compile
"com.jakewharton:butterknife:6.1.0"
...
...
@@ -126,4 +128,5 @@ dependencies {
compile
'com.meituan.android.walle:library:1.1.5'
//walle
compile
project
(
path:
':multi-image-selector'
)
compile
'com.tbruyelle.rxpermissions2:rxpermissions:0.9.3@aar'
}
app/src/main/AndroidManifest.xml
View file @
b43cb00b
...
...
@@ -13,6 +13,7 @@
<uses-permission
android:name=
"android.permission.ACCESS_WIFI_STATE"
/>
<uses-permission
android:name=
"android.permission.READ_PHONE_STATE"
/>
<uses-permission
android:name=
"android.permission.CAMERA"
/>
<application
android:name=
".DuoBaoApplication"
...
...
@@ -55,7 +56,7 @@
android:name=
".view.activity.MainActivity"
android:exported=
"true"
android:launchMode=
"singleTask"
android:theme=
"@
android:style/Theme.Translucent
"
android:theme=
"@
style/Theme.AppCompat.Light.NoActionBar
"
android:screenOrientation=
"portrait"
>
<intent-filter>
<action
android:name=
"android.intent.action.VIEW"
/>
...
...
app/src/main/java/com/maile/jingcai/base/BaseApplication.java
View file @
b43cb00b
...
...
@@ -20,6 +20,7 @@ import com.umeng.analytics.MobclickAgent;
public
class
BaseApplication
extends
Application
{
public
static
IWXAPI
sApi
;
protected
static
BaseApplication
sInstance
;
private
Context
mApplicationContext
;
@Override
public
void
onCreate
()
{
...
...
@@ -69,7 +70,7 @@ public class BaseApplication extends Application{
}
public
static
Context
getAppContext
()
{
return
sInstance
;
return
getAppContext
()
;
}
/**
...
...
app/src/main/java/com/maile/jingcai/util/PermissionUtils.java
0 → 100644
View file @
b43cb00b
package
com
.
maile
.
jingcai
.
util
;
import
android.Manifest
;
import
android.app.Activity
;
import
android.content.DialogInterface
;
import
android.content.Intent
;
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.v7.app.AlertDialog
;
import
android.util.Log
;
import
android.widget.Toast
;
import
com.maile.jingcai.R
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
/**
* Created by qianxiaoai on 2016/7/7.
*/
public
class
PermissionUtils
{
private
static
final
String
TAG
=
PermissionUtils
.
class
.
getSimpleName
();
public
static
final
int
CODE_RECORD_AUDIO
=
0
;
public
static
final
int
CODE_GET_ACCOUNTS
=
1
;
public
static
final
int
CODE_READ_PHONE_STATE
=
2
;
public
static
final
int
CODE_CALL_PHONE
=
3
;
public
static
final
int
CODE_CAMERA
=
4
;
public
static
final
int
CODE_ACCESS_FINE_LOCATION
=
5
;
public
static
final
int
CODE_ACCESS_COARSE_LOCATION
=
6
;
public
static
final
int
CODE_READ_EXTERNAL_STORAGE
=
7
;
public
static
final
int
CODE_WRITE_EXTERNAL_STORAGE
=
8
;
public
static
final
int
CODE_MULTI_PERMISSION
=
100
;
public
static
final
String
PERMISSION_RECORD_AUDIO
=
Manifest
.
permission
.
RECORD_AUDIO
;
public
static
final
String
PERMISSION_GET_ACCOUNTS
=
Manifest
.
permission
.
GET_ACCOUNTS
;
public
static
final
String
PERMISSION_READ_PHONE_STATE
=
Manifest
.
permission
.
READ_PHONE_STATE
;
public
static
final
String
PERMISSION_CALL_PHONE
=
Manifest
.
permission
.
CALL_PHONE
;
public
static
final
String
PERMISSION_CAMERA
=
Manifest
.
permission
.
CAMERA
;
public
static
final
String
PERMISSION_ACCESS_FINE_LOCATION
=
Manifest
.
permission
.
ACCESS_FINE_LOCATION
;
public
static
final
String
PERMISSION_ACCESS_COARSE_LOCATION
=
Manifest
.
permission
.
ACCESS_COARSE_LOCATION
;
public
static
final
String
PERMISSION_READ_EXTERNAL_STORAGE
=
Manifest
.
permission
.
READ_EXTERNAL_STORAGE
;
public
static
final
String
PERMISSION_WRITE_EXTERNAL_STORAGE
=
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
;
private
static
final
String
[]
requestPermissions
=
{
PERMISSION_CAMERA
,
PERMISSION_READ_EXTERNAL_STORAGE
,
PERMISSION_WRITE_EXTERNAL_STORAGE
};
public
interface
PermissionGrant
{
void
onPermissionGranted
(
int
requestCode
);
}
/**
* Requests permission.
*
* @param activity
* @param requestCode request code, e.g. if you need request CAMERA permission,parameters is PermissionUtils.CODE_CAMERA
*/
public
static
void
requestPermission
(
final
Activity
activity
,
final
int
requestCode
,
PermissionGrant
permissionGrant
)
{
if
(
activity
==
null
)
{
return
;
}
Log
.
i
(
TAG
,
"requestPermission requestCode:"
+
requestCode
);
if
(
requestCode
<
0
||
requestCode
>=
requestPermissions
.
length
)
{
Log
.
w
(
TAG
,
"requestPermission illegal requestCode:"
+
requestCode
);
return
;
}
final
String
requestPermission
=
requestPermissions
[
requestCode
];
//如果是6.0以下的手机,ActivityCompat.checkSelfPermission()会始终等于PERMISSION_GRANTED,
// 但是,如果用户关闭了你申请的权限,ActivityCompat.checkSelfPermission(),会导致程序崩溃(java.lang.RuntimeException: Unknown exception code: 1 msg null),
// 你可以使用try{}catch(){},处理异常,也可以判断系统版本,低于23就不申请权限,直接做你想做的。permissionGrant.onPermissionGranted(requestCode);
// if (Build.VERSION.SDK_INT < 23) {
// permissionGrant.onPermissionGranted(requestCode);
// return;
// }
int
checkSelfPermission
;
try
{
checkSelfPermission
=
ActivityCompat
.
checkSelfPermission
(
activity
,
requestPermission
);
}
catch
(
RuntimeException
e
)
{
Toast
.
makeText
(
activity
,
"please open this permission"
,
Toast
.
LENGTH_SHORT
)
.
show
();
Log
.
e
(
TAG
,
"RuntimeException:"
+
e
.
getMessage
());
return
;
}
if
(
checkSelfPermission
!=
PackageManager
.
PERMISSION_GRANTED
)
{
Log
.
i
(
TAG
,
"ActivityCompat.checkSelfPermission != PackageManager.PERMISSION_GRANTED"
);
if
(
ActivityCompat
.
shouldShowRequestPermissionRationale
(
activity
,
requestPermission
))
{
Log
.
i
(
TAG
,
"requestPermission shouldShowRequestPermissionRationale"
);
shouldShowRationale
(
activity
,
requestCode
,
requestPermission
);
}
else
{
Log
.
d
(
TAG
,
"requestCameraPermission else"
);
ActivityCompat
.
requestPermissions
(
activity
,
new
String
[]{
requestPermission
},
requestCode
);
}
}
else
{
Log
.
d
(
TAG
,
"ActivityCompat.checkSelfPermission ==== PackageManager.PERMISSION_GRANTED"
);
Toast
.
makeText
(
activity
,
"opened:"
+
requestPermissions
[
requestCode
],
Toast
.
LENGTH_SHORT
).
show
();
permissionGrant
.
onPermissionGranted
(
requestCode
);
}
}
private
static
void
requestMultiResult
(
Activity
activity
,
String
[]
permissions
,
int
[]
grantResults
,
PermissionGrant
permissionGrant
)
{
if
(
activity
==
null
)
{
return
;
}
//TODO
Log
.
d
(
TAG
,
"onRequestPermissionsResult permissions length:"
+
permissions
.
length
);
Map
<
String
,
Integer
>
perms
=
new
HashMap
<>();
ArrayList
<
String
>
notGranted
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
permissions
.
length
;
i
++)
{
Log
.
d
(
TAG
,
"permissions: [i]:"
+
i
+
", permissions[i]"
+
permissions
[
i
]
+
",grantResults[i]:"
+
grantResults
[
i
]);
perms
.
put
(
permissions
[
i
],
grantResults
[
i
]);
if
(
grantResults
[
i
]
!=
PackageManager
.
PERMISSION_GRANTED
)
{
notGranted
.
add
(
permissions
[
i
]);
}
}
if
(
notGranted
.
size
()
==
0
)
{
Toast
.
makeText
(
activity
,
"所有权限授权成功"
,
Toast
.
LENGTH_SHORT
)
.
show
();
permissionGrant
.
onPermissionGranted
(
CODE_MULTI_PERMISSION
);
}
else
{
openSettingActivity
(
activity
,
"更改头像需要去设置页面开启权限,GO!"
);
}
}
/**
* 一次申请多个权限
*/
public
static
void
requestMultiPermissions
(
final
Activity
activity
,
PermissionGrant
grant
)
{
final
List
<
String
>
permissionsList
=
getNoGrantedPermission
(
activity
,
false
);
final
List
<
String
>
shouldRationalePermissionsList
=
getNoGrantedPermission
(
activity
,
true
);
//TODO checkSelfPermission
if
(
permissionsList
==
null
||
shouldRationalePermissionsList
==
null
)
{
return
;
}
Log
.
d
(
TAG
,
"requestMultiPermissions permissionsList:"
+
permissionsList
.
size
()
+
",shouldRationalePermissionsList:"
+
shouldRationalePermissionsList
.
size
());
if
(
permissionsList
.
size
()
>
0
)
{
ActivityCompat
.
requestPermissions
(
activity
,
permissionsList
.
toArray
(
new
String
[
permissionsList
.
size
()]),
CODE_MULTI_PERMISSION
);
Log
.
d
(
TAG
,
"showMessageOKCancel requestPermissions"
);
}
else
if
(
shouldRationalePermissionsList
.
size
()
>
0
)
{
showMessageOKCancel
(
activity
,
"should open those permission"
,
new
DialogInterface
.
OnClickListener
()
{
@Override
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
ActivityCompat
.
requestPermissions
(
activity
,
shouldRationalePermissionsList
.
toArray
(
new
String
[
shouldRationalePermissionsList
.
size
()]),
CODE_MULTI_PERMISSION
);
Log
.
d
(
TAG
,
"showMessageOKCancel requestPermissions"
);
}
});
}
else
{
grant
.
onPermissionGranted
(
CODE_MULTI_PERMISSION
);
}
}
private
static
void
shouldShowRationale
(
final
Activity
activity
,
final
int
requestCode
,
final
String
requestPermission
)
{
//TODO
String
[]
permissionsHint
=
activity
.
getResources
().
getStringArray
(
R
.
array
.
permissions
);
showMessageOKCancel
(
activity
,
"Rationale: "
+
permissionsHint
[
requestCode
],
new
DialogInterface
.
OnClickListener
()
{
@Override
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
ActivityCompat
.
requestPermissions
(
activity
,
new
String
[]{
requestPermission
},
requestCode
);
Log
.
d
(
TAG
,
"showMessageOKCancel requestPermissions:"
+
requestPermission
);
}
});
}
private
static
void
showMessageOKCancel
(
final
Activity
context
,
String
message
,
DialogInterface
.
OnClickListener
okListener
)
{
new
AlertDialog
.
Builder
(
context
)
.
setMessage
(
message
)
.
setPositiveButton
(
"OK"
,
okListener
)
.
setNegativeButton
(
"Cancel"
,
null
)
.
create
()
.
show
();
}
/**
* @param activity
* @param requestCode Need consistent with requestPermission
* @param permissions
* @param grantResults
*/
public
static
void
requestPermissionsResult
(
final
Activity
activity
,
final
int
requestCode
,
@NonNull
String
[]
permissions
,
@NonNull
int
[]
grantResults
,
PermissionGrant
permissionGrant
)
{
if
(
activity
==
null
)
{
return
;
}
Log
.
d
(
TAG
,
"requestPermissionsResult requestCode:"
+
requestCode
);
if
(
requestCode
==
CODE_MULTI_PERMISSION
)
{
requestMultiResult
(
activity
,
permissions
,
grantResults
,
permissionGrant
);
return
;
}
if
(
requestCode
<
0
||
requestCode
>=
requestPermissions
.
length
)
{
Log
.
w
(
TAG
,
"requestPermissionsResult illegal requestCode:"
+
requestCode
);
Toast
.
makeText
(
activity
,
"illegal requestCode:"
+
requestCode
,
Toast
.
LENGTH_SHORT
).
show
();
return
;
}
Log
.
i
(
TAG
,
"onRequestPermissionsResult requestCode:"
+
requestCode
+
",permissions:"
+
permissions
.
toString
()
+
",grantResults:"
+
grantResults
.
toString
()
+
",length:"
+
grantResults
.
length
);
if
(
grantResults
.
length
==
1
&&
grantResults
[
0
]
==
PackageManager
.
PERMISSION_GRANTED
)
{
Log
.
i
(
TAG
,
"onRequestPermissionsResult PERMISSION_GRANTED"
);
//TODO success, do something, can use callback
permissionGrant
.
onPermissionGranted
(
requestCode
);
}
else
{
//TODO hint user this permission function
Log
.
i
(
TAG
,
"onRequestPermissionsResult PERMISSION NOT GRANTED"
);
//TODO
String
[]
permissionsHint
=
activity
.
getResources
().
getStringArray
(
R
.
array
.
permissions
);
openSettingActivity
(
activity
,
"Result"
+
permissionsHint
[
requestCode
]);
}
}
private
static
void
openSettingActivity
(
final
Activity
activity
,
String
message
)
{
showMessageOKCancel
(
activity
,
message
,
new
DialogInterface
.
OnClickListener
()
{
@Override
public
void
onClick
(
DialogInterface
dialog
,
int
which
)
{
Intent
intent
=
new
Intent
();
intent
.
setAction
(
Settings
.
ACTION_APPLICATION_DETAILS_SETTINGS
);
Log
.
d
(
TAG
,
"getPackageName(): "
+
activity
.
getPackageName
());
Uri
uri
=
Uri
.
fromParts
(
"package"
,
activity
.
getPackageName
(),
null
);
intent
.
setData
(
uri
);
activity
.
startActivity
(
intent
);
}
});
}
/**
* @param activity
* @param isShouldRationale true: return no granted and shouldShowRequestPermissionRationale permissions, false:return no granted and !shouldShowRequestPermissionRationale
* @return
*/
public
static
ArrayList
<
String
>
getNoGrantedPermission
(
Activity
activity
,
boolean
isShouldRationale
)
{
ArrayList
<
String
>
permissions
=
new
ArrayList
<>();
for
(
int
i
=
0
;
i
<
requestPermissions
.
length
;
i
++)
{
String
requestPermission
=
requestPermissions
[
i
];
//TODO checkSelfPermission
int
checkSelfPermission
=
-
1
;
try
{
checkSelfPermission
=
ActivityCompat
.
checkSelfPermission
(
activity
,
requestPermission
);
}
catch
(
RuntimeException
e
)
{
Toast
.
makeText
(
activity
,
"please open those permission"
,
Toast
.
LENGTH_SHORT
)
.
show
();
Log
.
e
(
TAG
,
"RuntimeException:"
+
e
.
getMessage
());
return
null
;
}
if
(
checkSelfPermission
!=
PackageManager
.
PERMISSION_GRANTED
)
{
Log
.
i
(
TAG
,
"getNoGrantedPermission ActivityCompat.checkSelfPermission != PackageManager.PERMISSION_GRANTED:"
+
requestPermission
);
if
(
ActivityCompat
.
shouldShowRequestPermissionRationale
(
activity
,
requestPermission
))
{
Log
.
d
(
TAG
,
"shouldShowRequestPermissionRationale if"
);
if
(
isShouldRationale
)
{
permissions
.
add
(
requestPermission
);
}
}
else
{
if
(!
isShouldRationale
)
{
permissions
.
add
(
requestPermission
);
}
Log
.
d
(
TAG
,
"shouldShowRequestPermissionRationale else"
);
}
}
}
return
permissions
;
}
}
app/src/main/java/com/maile/jingcai/view/activity/MainActivity.java
View file @
b43cb00b
package
com
.
maile
.
jingcai
.
view
.
activity
;
import
android.Manifest
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.graphics.Bitmap
;
...
...
@@ -7,6 +8,8 @@ import android.net.Uri;
import
android.os.Build
;
import
android.os.Bundle
;
import
android.provider.MediaStore
;
import
android.support.annotation.NonNull
;
import
android.support.v4.app.ActivityCompat
;
import
android.support.v4.app.Fragment
;
import
android.support.v4.app.FragmentActivity
;
import
android.support.v4.app.FragmentManager
;
...
...
@@ -18,6 +21,7 @@ import android.view.KeyEvent;
import
android.view.View
;
import
android.view.Window
;
import
android.webkit.WebView
;
import
android.widget.Toast
;
import
com.flyco.tablayout.CommonTabLayout
;
import
com.flyco.tablayout.listener.CustomTabEntity
;
...
...
@@ -34,12 +38,14 @@ 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.PermissionUtils
;
import
com.maile.jingcai.util.PublicUtils
;
import
com.maile.jingcai.util.preferences.IPreferencesIds
;
import
com.maile.jingcai.util.preferences.PreferencesManager
;
import
com.maile.jingcai.view.ViewFindUtils
;
import
com.maile.jingcai.view.fragment.SimpleCardFragment
;
import
com.maile.jingcai.view.iview.IWebView
;
import
com.tbruyelle.rxpermissions2.RxPermissions
;
import
com.umeng.analytics.MobclickAgent
;
import
java.io.File
;
...
...
@@ -58,7 +64,7 @@ import rx.schedulers.Schedulers;
* Created by chengfeng-piaopiao on 2017/11/8.
*/
public
class
MainActivity
extends
FragmentActivity
implements
IWebView
{
public
class
MainActivity
extends
FragmentActivity
implements
IWebView
,
ActivityCompat
.
OnRequestPermissionsResultCallback
{
public
static
final
int
EDIT_USER_INFO_SUCCESS_CODE
=
200
;
// 修改成功
private
static
final
int
SEX_TYPE_MALE
=
1
;
private
static
final
int
SEX_TYPE_FEMALE
=
2
;
...
...
@@ -382,15 +388,28 @@ public class MainActivity extends FragmentActivity implements IWebView {
//mPicSelectView.show(true);拉起activity
Intent
intent
;
if
(
Build
.
VERSION
.
SDK_INT
>=
Build
.
VERSION_CODES
.
KITKAT
)
{
//19版本
String
savePath
=
Constant
.
SHARE_DIR
+
System
.
currentTimeMillis
()
+
".png"
;
Intent
intentHead
=
new
Intent
(
MainActivity
.
this
,
ImageCropHeadActivity
.
class
);
startActivityForResult
(
intentHead
,
IMAGE_HEAD
);
}
else
{
intent
=
CameraUtil
.
cropImageUri
();
startActivityForResult
(
intent
,
CameraUtil
.
SELECT_A_PICTURE
);
}
}
}
private
PermissionUtils
.
PermissionGrant
mPermissionGrant
=
new
PermissionUtils
.
PermissionGrant
()
{
@Override
public
void
onPermissionGranted
(
int
requestCode
)
{
}
};
/**
* Callback received when a permissions request has been completed.
*/
@Override
public
void
onRequestPermissionsResult
(
final
int
requestCode
,
@NonNull
String
[]
permissions
,
@NonNull
int
[]
grantResults
)
{
PermissionUtils
.
requestPermissionsResult
(
this
,
requestCode
,
permissions
,
grantResults
,
mPermissionGrant
);
}
}
app/src/main/java/com/maile/jingcai/view/fragment/SimpleCardFragment.java
View file @
b43cb00b
...
...
@@ -3,13 +3,17 @@ package com.maile.jingcai.view.fragment;
import
android.annotation.SuppressLint
;
import
android.app.Activity
;
import
android.content.Context
;
import
android.content.DialogInterface
;
import
android.content.Intent
;
import
android.os.Build
;
import
android.os.Bundle
;
import
android.os.Handler
;
import
android.support.annotation.NonNull
;
import
android.support.annotation.Nullable
;
import
android.support.annotation.RequiresApi
;
import
android.support.v13.app.FragmentCompat
;
import
android.support.v4.app.Fragment
;
import
android.support.v7.app.AlertDialog
;
import
android.util.Log
;
import
android.view.LayoutInflater
;
import
android.view.View
;
...
...
@@ -23,15 +27,19 @@ import android.webkit.WebView;
import
android.webkit.WebViewClient
;
import
android.widget.ProgressBar
;
import
android.widget.RelativeLayout
;
import
android.widget.Toast
;
import
com.maile.jingcai.R
;
import
com.maile.jingcai.base.BaseApplication
;
import
com.maile.jingcai.base.BaseFragment
;
import
com.maile.jingcai.module.WrapperRspEntity
;
import
com.maile.jingcai.module.api.LoginApiService
;
import
com.maile.jingcai.module.net.RetrofitManager
;
import
com.maile.jingcai.util.PermissionUtils
;
import
com.maile.jingcai.util.PublicUtils
;
import
com.maile.jingcai.util.preferences.IPreferencesIds
;
import
com.maile.jingcai.util.preferences.PreferencesManager
;
import
com.maile.jingcai.view.activity.ImageCropHeadActivity
;
import
com.maile.jingcai.view.activity.LoginActivity
;
import
com.maile.jingcai.view.activity.MainActivity
;
import
com.maile.jingcai.view.iview.IWebView
;
...
...
@@ -49,7 +57,7 @@ import rx.android.schedulers.AndroidSchedulers;
import
rx.schedulers.Schedulers
;
public
class
SimpleCardFragment
extends
BaseFragment
{
public
class
SimpleCardFragment
extends
BaseFragment
implements
FragmentCompat
.
OnRequestPermissionsResultCallback
{
@InjectView
(
R
.
id
.
webView_progress
)
ProgressBar
mWebViewProgress
;
@InjectView
(
R
.
id
.
webView
)
...
...
@@ -276,10 +284,17 @@ public class SimpleCardFragment extends BaseFragment {
@JavascriptInterface
public
void
editUserHeadImage
(
String
uid
){
Log
.
d
(
"editUserHeadImage"
,
"uid: "
+
uid
);
mIWebView
.
editUserImage
(
mWebView
,
currentURL
,
uid
);
mUid
=
uid
;
requirePermission
();
}
}
private
static
String
mUid
;
@Override
public
void
onDestroyView
()
{
super
.
onDestroyView
();
...
...
@@ -297,4 +312,60 @@ public class SimpleCardFragment extends BaseFragment {
}
return
false
;
}
private
void
requirePermission
(){
PermissionUtils
.
requestMultiPermissions
(
getActivity
(),
mPermissionGrant
);
}
private
PermissionUtils
.
PermissionGrant
mPermissionGrant
=
new
PermissionUtils
.
PermissionGrant
()
{
@Override
public
void
onPermissionGranted
(
int
requestCode
)
{
switch
(
requestCode
)
{
case
PermissionUtils
.
CODE_RECORD_AUDIO
:
Toast
.
makeText
(
getActivity
(),
"Result Permission Grant CODE_RECORD_AUDIO"
,
Toast
.
LENGTH_SHORT
).
show
();
break
;
case
PermissionUtils
.
CODE_GET_ACCOUNTS
:
Toast
.
makeText
(
getActivity
(),
"Result Permission Grant CODE_GET_ACCOUNTS"
,
Toast
.
LENGTH_SHORT
).
show
();
break
;
case
PermissionUtils
.
CODE_READ_PHONE_STATE
:
Toast
.
makeText
(
getActivity
(),
"Result Permission Grant CODE_READ_PHONE_STATE"
,
Toast
.
LENGTH_SHORT
).
show
();
break
;
case
PermissionUtils
.
CODE_CALL_PHONE
:
Toast
.
makeText
(
getActivity
(),
"Result Permission Grant CODE_CALL_PHONE"
,
Toast
.
LENGTH_SHORT
).
show
();
break
;
case
PermissionUtils
.
CODE_CAMERA
:
Toast
.
makeText
(
getActivity
(),
"Result Permission Grant CODE_CAMERA"
,
Toast
.
LENGTH_SHORT
).
show
();
break
;
case
PermissionUtils
.
CODE_ACCESS_FINE_LOCATION
:
Toast
.
makeText
(
getActivity
(),
"Result Permission Grant CODE_ACCESS_FINE_LOCATION"
,
Toast
.
LENGTH_SHORT
).
show
();
break
;
case
PermissionUtils
.
CODE_ACCESS_COARSE_LOCATION
:
Toast
.
makeText
(
getActivity
(),
"Result Permission Grant CODE_ACCESS_COARSE_LOCATION"
,
Toast
.
LENGTH_SHORT
).
show
();
break
;
case
PermissionUtils
.
CODE_READ_EXTERNAL_STORAGE
:
Toast
.
makeText
(
getActivity
(),
"Result Permission Grant CODE_READ_EXTERNAL_STORAGE"
,
Toast
.
LENGTH_SHORT
).
show
();
break
;
case
PermissionUtils
.
CODE_WRITE_EXTERNAL_STORAGE
:
Toast
.
makeText
(
getActivity
(),
"Result Permission Grant CODE_WRITE_EXTERNAL_STORAGE"
,
Toast
.
LENGTH_SHORT
).
show
();
break
;
case
PermissionUtils
.
CODE_MULTI_PERMISSION
:
mIWebView
.
editUserImage
(
mWebView
,
currentURL
,
mUid
);
// Toast.makeText(MainActivity.this, "Result All Permission Grant", Toast.LENGTH_SHORT).show();
break
;
default
:
break
;
}
}
};
/**
* Callback received when a permissions request has been completed.
*/
@Override
public
void
onRequestPermissionsResult
(
final
int
requestCode
,
@NonNull
String
[]
permissions
,
@NonNull
int
[]
grantResults
)
{
PermissionUtils
.
requestPermissionsResult
(
getActivity
(),
requestCode
,
permissions
,
grantResults
,
mPermissionGrant
);
}
}
\ No newline at end of file
app/src/main/res/values/arrays.xml
0 → 100644
View file @
b43cb00b
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array
name=
"permissions"
>
<item>
@string/permission_recode_audio_hint
</item>
<item>
@string/permission_get_accounts_hint
</item>
<item>
@string/permission_read_phone_hint
</item>
<item>
@string/permission_call_phone_hint
</item>
<item>
@string/permission_camera_hint
</item>
<item>
@string/permission_access_fine_location_hint
</item>
<item>
@string/permission_access_coarse_location_hint
</item>
<item>
@string/permission_read_external_hint
</item>
<item>
@string/permission_white_external_hint
</item>
</string-array>
</resources>
app/src/main/res/values/strings.xml
View file @
b43cb00b
...
...
@@ -25,4 +25,14 @@
<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>
<string
name=
"permission_get_accounts_hint"
>
没有此权限,无法开启这个功能,请开启权限。PERMISSION_GET_ACCOUNTS
</string>
<string
name=
"permission_read_phone_hint"
>
没有此权限,无法开启这个功能,请开启权限。PERMISSION_READ_PHONE_STATE
</string>
<string
name=
"permission_call_phone_hint"
>
没有此权限,无法开启这个功能,请开启权限。PERMISSION_CALL_PHONE
</string>
<string
name=
"permission_camera_hint"
>
没有此权限,无法开启这个功能,请开启权限。PERMISSION_CAMERA
</string>
<string
name=
"permission_access_fine_location_hint"
>
没有此权限,无法开启这个功能,请开启权限。PERMISSION_ACCESS_FINE_LOCATION
</string>
<string
name=
"permission_access_coarse_location_hint"
>
没有此权限,无法开启这个功能,请开启权限。PERMISSION_ACCESS_COARSE_LOCATION
</string>
<string
name=
"permission_read_external_hint"
>
没有此权限,无法开启这个功能,请开启权限。PERMISSION_READ_EXTERNAL_STORAGE
</string>
<string
name=
"permission_white_external_hint"
>
没有此权限,无法开启这个功能,请开启权限。PERMISSION_WRITE_EXTERNAL_STORAGE
</string>
<string
name=
"permission_recode_audio_hint"
>
没有此权限,无法开启这个功能,请开启权限。PERMISSION_RECORD_AUDIO
</string>
</resources>
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