PermissionActivity.java 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package org.yczbj.ycvideoplayerlib.window;
  2. import android.content.Context;
  3. import android.content.Intent;
  4. import android.net.Uri;
  5. import android.os.Build;
  6. import android.os.Bundle;
  7. import android.support.annotation.RequiresApi;
  8. import android.support.v7.app.AppCompatActivity;
  9. import java.util.ArrayList;
  10. import java.util.List;
  11. /**
  12. * <pre>
  13. * @author yangchong
  14. * blog : https://github.com/yangchong211
  15. * time : 2018/2/10
  16. * desc : 用于在内部自动申请权限
  17. * revise:
  18. * </pre>
  19. */
  20. public class PermissionActivity extends AppCompatActivity {
  21. private static List<PermissionListener> mPermissionListenerList;
  22. @Override
  23. protected void onCreate(Bundle savedInstanceState) {
  24. super.onCreate(savedInstanceState);
  25. if (Build.VERSION.SDK_INT >= 23){
  26. requestAlertWindowPermission();
  27. }
  28. }
  29. @RequiresApi(api = 23)
  30. private void requestAlertWindowPermission() {
  31. Intent intent = new Intent("android.settings.action.MANAGE_OVERLAY_PERMISSION");
  32. intent.setData(Uri.parse("package:" + getPackageName()));
  33. startActivityForResult(intent, 1);
  34. }
  35. @RequiresApi(api = 23)
  36. @Override
  37. protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  38. super.onActivityResult(requestCode, resultCode, data);
  39. if (Build.VERSION.SDK_INT >= 23){
  40. //用23以上编译即可出现canDrawOverlays
  41. if (WindowUtil.hasPermission(this)) {
  42. mPermissionListener.onSuccess();
  43. } else {
  44. mPermissionListener.onFail();
  45. }
  46. }
  47. finish();
  48. }
  49. static synchronized void request(Context context, PermissionListener permissionListener) {
  50. if (mPermissionListenerList == null) {
  51. mPermissionListenerList = new ArrayList<>();
  52. mPermissionListener = new PermissionListener() {
  53. @Override
  54. public void onSuccess() {
  55. for (PermissionListener listener : mPermissionListenerList) {
  56. listener.onSuccess();
  57. }
  58. }
  59. @Override
  60. public void onFail() {
  61. for (PermissionListener listener : mPermissionListenerList) {
  62. listener.onFail();
  63. }
  64. }
  65. };
  66. Intent intent = new Intent(context, PermissionActivity.class);
  67. intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  68. context.startActivity(intent);
  69. }
  70. mPermissionListenerList.add(permissionListener);
  71. }
  72. private static PermissionListener mPermissionListener;
  73. }