Android 6.0完美封装
来源:互联网 发布:苹果app移动数据下载 编辑:程序博客网 时间:2024/06/17 18:12
public class MainActivity extends BaseActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ActivityCollector.addActicity(this); } @Override protected void onDestroy() { super.onDestroy(); ActivityCollector.removeActivity(this); } public void buttonClick(View view) { switch (view.getId()){ case R.id.button: requestRunTimePression(new String[]{Manifest.permission.CALL_PHONE,Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE}, new PressionListener() { @Override public void onGranted() { Toast.makeText(MainActivity.this,"OKOKOKOK",Toast.LENGTH_SHORT).show(); } @Override public void onFailure(List<String> failurePression) { for (int i = 0; i < failurePression.size(); i++) { Toast.makeText(MainActivity.this,"NONONO"+failurePression.get(i),Toast.LENGTH_SHORT).show(); } } }); break; default: break; } }}
public class BaseActivity extends AppCompatActivity { private static PressionListener mListener; @Override public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) { super.onCreate(savedInstanceState, persistentState); ActivityCollector.addActicity(this); } public static void requestRunTimePression(String [] pression, PressionListener listener){ mListener = listener; Activity topActivity = ActivityCollector.getTopActivity(); List<String> pressionList = new ArrayList<>(); for (int i = 0; i < pression.length; i++) { if(ContextCompat.checkSelfPermission(topActivity,pression[i])!= PackageManager.PERMISSION_GRANTED){ pressionList.add(pression[i]); } } if(!pressionList.isEmpty()){ ActivityCompat.requestPermissions(topActivity,pressionList.toArray(new String [pressionList.size()]),1); }else{ //do something mListener.onGranted(); } } @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); List<String> failureList = new ArrayList<>(); switch (requestCode){ case 1: if(grantResults.length>0){ for (int i = 0; i < grantResults.length; i++) { int granted = grantResults[i]; String pression = permissions[i]; if(granted!=PackageManager.PERMISSION_GRANTED){ failureList.add(pression); } } if(failureList.isEmpty()){ mListener.onGranted(); }else{ mListener.onFailure(failureList); } } break; default: break; } } @Override protected void onDestroy() { ActivityCollector.removeActivity(this); super.onDestroy(); }}
public class ActivityCollector { private static List<Activity> activityList = new ArrayList<>(); public static void addActicity(Activity activity){ activityList.add(activity); } public static void removeActivity(Activity activity){ activityList.remove(activity); } public static Activity getTopActivity(){ if(activityList.isEmpty()){ return null; }else{ return activityList.get(activityList.size()-1); } }}
public interface PressionListener { //授权成功的接口 void onGranted(); //授权失败的接口 void onFailure(List<String> failurePression);}
0 0
- Android 6.0完美封装
- Android RxJava+Retrofit完美封装
- Android RxJava+Retrofit完美封装
- Android 完美对BaseAdapter进行二次封装
- Android实现左滑退出Activity(完美封装)
- Android SQLite 建表 面向对象编程 完美封装 一劳永逸
- 用kotlin写的android Log的几乎完美封装
- Javascript 分页 完美封装
- Retrofit+RxJava 完美封装
- OutputDebugString完美封装
- 闭包的完美封装
- HttpPost请求的完美封装
- Retrofit+RxJava完美封装(二)
- HttpPost请求的完美封装
- Android基于Retrofit2.0 封装的超好用的RetrofitClient工具类(完美结合RxJava)
- Android权限处理——权限管理实战,完美轻量级封装
- Android 6.0RunTime Permission完美解决方案
- Android 6.0RunTime Permission完美解决方案
- java基础--泛型
- 批处理怎样记录每次运行所需的时间
- 第21章 sed进阶
- C#VBA录制宏的控制类
- 面向对象之构造方法
- Android 6.0完美封装
- GCD-Sync
- ionic2 tabs使用 Modal底部tab弹出框
- eclipse在android项目导入所有包
- Hyperledger Fabric继peer启动之后的源码解析二
- 获取除去法定节假日的第二天日期
- iOS开发:给UIWebView导航栏添加返回与关闭按钮
- andriod 中.9.png图片 原理
- python 操作 excel