package scoto.com.resultforactivity.resutactivity;
import android.app.Fragment;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.support.annotation.NonNull;
import android.widget.Toast;
import java.util.List;
import static android.app.Activity.RESULT_OK;
/**
* @author 李泽锋
* @Description:
* @date 2018年05月11日-11时17分
*/
public class AppFragment extends Fragment {
private EyRequest request;
//与activity绑定事件
@Override
public void onAttach(Context context) {
super.onAttach(context);
//先检查权限
if (request.getPermissions() == null) {
//如果没有权限检查则直接启动activity
startActivity(request.getIntent(), request.getRequestCode());
} else {
//如果有权限检查首先检查权限,直到回调成功则再启动activity
RequestPermissions(request.getPermissions(), new ActivityResult.PermissionsBack() {
@Override
public void PermissionsResult() {
startActivity(request.getIntent(), request.getRequestCode());
}
});
}
}
public void startActivity(Intent intent, int requestCode){
if(intent!=null){
startActivityForResult(intent,requestCode);
}else {
if(isAdded()){
getActivity().getFragmentManager().beginTransaction().detach(this).commit(); //解除与activity的绑定
request.clear(); //清空数据
}
}
}
public void setRequest(EyRequest request) {
this.request = request;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if(RESULT_OK==resultCode){
ActivityResult.OnActivityBack onActivityBack = (ActivityResult.OnActivityBack) request.getValue(requestCode);
onActivityBack.OnActivityResult(data);
}
if(isAdded()){
getActivity().getFragmentManager().beginTransaction().detach(this).commitAllowingStateLoss(); //解除与activity的绑定
request.clear(); //清空数据
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (request.getValue(requestCode) != null) {
ActivityResult.PermissionsBack permissionsBack = (ActivityResult.PermissionsBack) request.getValue(requestCode);
if (PermissionUtils.checkGrantResults(grantResults)) {
permissionsBack.PermissionsResult(); //权限申请成功
} else {
Toast.makeText(getActivity(), "已拒绝权限!", Toast.LENGTH_SHORT).show();
if(isAdded()){
getActivity().getFragmentManager().beginTransaction().detach(this).commitAllowingStateLoss(); //解除与activity的绑定
request.clear(); //清空数据
}
}
}
}
public void RequestPermissions(List<String> strings, ActivityResult.PermissionsBack permissionsBack) {
String[] permissions = strings.toArray(new String[strings.size()]);
if(request.getValue(request.getPermissionCode())!=null){
permissionsBack= (ActivityResult.PermissionsBack) request.getValue(request.getPermissionCode());
}
//判断是否开启了权限
if (PermissionUtils.checkSelfPermission(getActivity(), permissions)) {
//权限都打开了。。
permissionsBack.PermissionsResult();
if(request.getIntent()==null){
if(isAdded()){
getActivity().getFragmentManager().beginTransaction().detach(this).commitAllowingStateLoss(); //解除与activity的绑定
request.clear(); //清空数据
}
}
} else {
//申请权限
request.put(request.getPermissionCode(),permissionsBack);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(permissions, request.getPermissionCode());
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
告别onActivityResult 工具类DEMO
共115个文件
xml:59个
java:11个
png:11个
4星 · 超过85%的资源 需积分: 10 8 下载量 68 浏览量
2018-11-08
15:29:27
上传
评论
收藏 3.33MB ZIP 举报
温馨提示
告别onActivityResult ,用代理实现获取startActivityForResult结果以及权限检查管理的工具类
资源推荐
资源详情
资源评论
收起资源包目录
告别onActivityResult 工具类DEMO (115个子文件)
gradlew.bat 2KB
fileSnapshots.bin 3.72MB
classAnalysis.bin 1.12MB
jarAnalysis.bin 550KB
fileHashes.bin 448KB
taskHistory.bin 237KB
taskHistory.bin 99KB
taskJars.bin 25KB
resourceHashesCache.bin 21KB
last-build.bin 1B
built.bin 0B
.gitignore 127B
.gitignore 8B
.gitignore 8B
build.gradle 1KB
build.gradle 859B
build.gradle 573B
settings.gradle 38B
gradlew 5KB
app.iml 11KB
resultforactivity.iml 11KB
LoingImage.iml 864B
gradle-wrapper.jar 52KB
AppFragment.java 4KB
MainActivity.java 4KB
V4Fragment.java 4KB
SuperLongImageView.java 4KB
ActivityResult.java 3KB
EyRequest.java 3KB
PermissionUtils.java 1KB
ExampleInstrumentedTest.java 786B
ExampleInstrumentedTest.java 767B
ExampleUnitTest.java 421B
ExampleUnitTest.java 414B
taskHistory.lock 17B
fileHashes.lock 17B
fileContent.lock 17B
javaCompile.lock 17B
cache.properties.lock 2B
long_image.png 2.11MB
ic_launcher_round.png 15KB
ic_launcher_round.png 10KB
ic_launcher.png 9KB
ic_launcher_round.png 7KB
ic_launcher.png 6KB
ic_launcher_round.png 5KB
ic_launcher.png 4KB
ic_launcher.png 3KB
ic_launcher_round.png 3KB
ic_launcher.png 2KB
proguard-rules.pro 772B
proguard-rules.pro 772B
gradle.properties 747B
local.properties 426B
gradle-wrapper.properties 236B
cache.properties 51B
workspace.xml 241KB
ic_launcher_background.xml 6KB
activity_main.xml 2KB
misc.xml 2KB
ic_launcher_foreground.xml 2KB
AndroidManifest.xml 1KB
com_android_support_test_espresso_espresso_idling_resource_3_0_2.xml 765B
com_android_support_animated_vector_drawable_27_1_1.xml 742B
com_android_support_animated_vector_drawable_26_1_0.xml 742B
com_android_support_support_vector_drawable_27_1_1.xml 737B
com_android_support_support_vector_drawable_26_1_0.xml 737B
com_android_support_support_media_compat_26_1_0.xml 722B
com_android_support_support_core_utils_27_1_1.xml 712B
com_android_support_support_core_utils_26_1_0.xml 712B
com_android_support_test_espresso_espresso_core_3_0_2.xml 710B
com_android_support_support_fragment_27_1_1.xml 702B
com_android_support_support_fragment_26_1_0.xml 702B
com_android_support_support_core_ui_26_1_0.xml 697B
com_android_support_support_core_ui_27_1_1.xml 697B
com_android_support_support_compat_27_1_1.xml 692B
com_android_support_support_compat_26_1_0.xml 692B
gradle.xml 689B
android_arch_lifecycle_livedata_core_1_1_0.xml 688B
com_android_support_appcompat_v7_27_1_1.xml 682B
com_android_support_appcompat_v7_26_1_0.xml 682B
com_android_support_support_v4_26_1_0.xml 672B
android_arch_lifecycle_viewmodel_1_1_0.xml 668B
com_android_support_test_monitor_1_0_2.xml 662B
android_arch_lifecycle_runtime_1_1_0.xml 658B
android_arch_lifecycle_runtime_1_0_0.xml 658B
com_android_support_test_runner_1_0_2.xml 657B
android_arch_core_runtime_1_1_0.xml 647B
com_android_support_support_annotations_27_1_1_jar.xml 609B
com_android_support_support_annotations_26_1_0_jar.xml 608B
org_hamcrest_hamcrest_integration_1_3_jar.xml 578B
runConfigurations.xml 564B
org_hamcrest_hamcrest_library_1_3_jar.xml 557B
android_arch_lifecycle_common_1_0_0_jar.xml 548B
android_arch_lifecycle_common_1_1_0_jar.xml 547B
org_hamcrest_hamcrest_core_1_3_jar.xml 543B
com_squareup_javawriter_2_1_1_jar.xml 538B
android_arch_core_common_1_1_0_jar.xml 533B
android_arch_core_common_1_0_0_jar.xml 533B
javax_inject_javax_inject_1_jar.xml 528B
共 115 条
- 1
- 2
资源评论
- HollowGoods2019-06-06感觉还可以,给了我灵感
lizefeng19
- 粉丝: 2
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Qt开发知识、经验总结 包括Qss,数据库,Excel,Model/View等
- IV数据.xlsx
- 一些深度学习中的小例子,适合新手学习使用
- foldcraftlauncher_262944.apk
- 珍藏多年的基于matlab实现潮流计算程序源代码集合,包含多个潮流计算程序.rar
- 使用FPGA实现串-并型乘法器
- 基于matlab实现针对基于双曲线定位的DV-Hop算法中误差误差出一种基于加权双曲线定位的DV-Hop改进算法.rar
- 基于matlab实现由遗传算法开发的整数规划,车辆调度问题.rar
- 电视家7.0(对电视配置要求高).apk
- 免费计算机毕业设计-基于JavaEE的医院病历管理系统设计与实现(包含论文+源码)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功