diff --git a/app/build.gradle b/app/build.gradle index 9640624..c9cde8a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,8 @@ android { applicationId "com.uiui.videoplayer" minSdkVersion 24 targetSdkVersion 28 - versionCode 117 - versionName "1.1.6" + versionCode 118 + versionName "1.1.7" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -202,4 +202,6 @@ dependencies { //autosize会改变第三方view的大小 //https://github.com/JessYanCoding/AndroidAutoSize //implementation 'me.jessyan:autosize:1.2.1' + // 权限请求框架:https://github.com/getActivity/XXPermissions + implementation 'com.github.getActivity:XXPermissions:20.0' } diff --git a/app/src/main/java/com/uiui/videoplayer/activity/main/MainActivity.java b/app/src/main/java/com/uiui/videoplayer/activity/main/MainActivity.java index 2ea9b04..ef00189 100644 --- a/app/src/main/java/com/uiui/videoplayer/activity/main/MainActivity.java +++ b/app/src/main/java/com/uiui/videoplayer/activity/main/MainActivity.java @@ -8,22 +8,24 @@ import android.graphics.BitmapFactory; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.net.Uri; -import android.os.Build; import android.util.Log; import android.view.KeyEvent; import android.view.View; +import android.widget.Toast; import androidx.core.app.ActivityCompat; -import androidx.core.content.ContextCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; +import com.hjq.permissions.OnPermissionCallback; +import com.hjq.permissions.XXPermissions; import com.uiui.videoplayer.BuildConfig; import com.uiui.videoplayer.R; import com.uiui.videoplayer.activity.vip.VipActivity; import com.uiui.videoplayer.base.BaseFragmentPagerAdapter; import com.uiui.videoplayer.base.mvvm.BaseMvvmActivity; import com.uiui.videoplayer.databinding.ActivityMainBinding; +import com.uiui.videoplayer.dialog.PermissionsDialog; import com.uiui.videoplayer.fragment.pic.PictureFragment; import com.uiui.videoplayer.fragment.video.VideoFragment; import com.uiui.videoplayer.utils.JGYUtils; @@ -40,6 +42,8 @@ import java.util.List; import io.reactivex.rxjava3.annotations.NonNull; public class MainActivity extends BaseMvvmActivity { + private static final String TAG = "MainActivity"; + private static final int REQUEST_PERMISSION_CODE = 200; private String[] title = new String[]{"视频", "照片"}; @@ -125,24 +129,61 @@ public class MainActivity extends BaseMvvmActivity mPermissionList = new ArrayList<>(); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { - for (String s : permissions) { - if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_DENIED) { - mPermissionList.add(s); - } else { - Log.e("TAG", "checkSelfPermission: "); -// mPresenter.getHomeVideo(); - getThumbnail(); - } - } - if (mPermissionList.size() > 0) {//有权限没有通过,需要申请 - ActivityCompat.requestPermissions(this, permissions, REQUEST_PERMISSION_CODE); - } + private PermissionsDialog mPermissionsDialog; + + private void showPermissionsDialog() { + if (mPermissionsDialog != null) { + mPermissionsDialog.dismiss(); + mPermissionsDialog = null; } + mPermissionsDialog = new PermissionsDialog(MainActivity.this); + mPermissionsDialog.setPermissionsCallback(new PermissionsDialog.PermissionsCallback() { + @Override + public void onGranted() { + mPermissionsDialog.dismiss(); + XXPermissions.with(MainActivity.this) + .permission(permissions) + .request(new OnPermissionCallback() { + @Override + public void onGranted(@androidx.annotation.NonNull List permissions, boolean allGranted) { + Log.e(TAG, "onGranted: permissions = " + permissions + " allGranted = " + allGranted); + if (!allGranted) { + Toast.makeText(MainActivity.this, "存储权限未正常授予", Toast.LENGTH_SHORT).show(); + return; + } + Log.e(TAG, "onGranted: 获取存储权限成功"); + } + + @Override + public void onDenied(@androidx.annotation.NonNull List permissions, boolean doNotAskAgain) { + Log.e(TAG, "onDenied: permissions = " + permissions + " doNotAskAgain = " + doNotAskAgain); + if (doNotAskAgain) { + Toast.makeText(MainActivity.this, "被永久拒绝授权,请手动授予存储权限", Toast.LENGTH_SHORT).show(); + // 如果是被永久拒绝就跳转到应用权限系统设置页面 + XXPermissions.startPermissionActivity(MainActivity.this, permissions); + } else { + Log.e(TAG, "onGranted: 获取存储权限失败"); + } + } + }); + } + + @Override + public void onDenied() { + mPermissionsDialog.dismiss(); + } + }); + mPermissionsDialog.setContent("本软件需要获取存储权限保存照片和视频,授权之后才可以正常使用"); + mPermissionsDialog.show(); } + private void checkSelfPermission() { + if (XXPermissions.isGranted(MainActivity.this, permissions)) { + } else { + showPermissionsDialog(); +// ActivityCompat.requestPermissions(this, permissions, REQUEST_PERMISSION_CODE); + } + } private void getThumbnail() { long s1 = System.currentTimeMillis(); diff --git a/app/src/main/java/com/uiui/videoplayer/activity/privacy/PrivacyActivity.java b/app/src/main/java/com/uiui/videoplayer/activity/privacy/PrivacyActivity.java index 5c6845f..3e06372 100644 --- a/app/src/main/java/com/uiui/videoplayer/activity/privacy/PrivacyActivity.java +++ b/app/src/main/java/com/uiui/videoplayer/activity/privacy/PrivacyActivity.java @@ -17,7 +17,7 @@ public class PrivacyActivity extends BaseMvvmActivity @@ -36,8 +36,8 @@ @@ -43,7 +43,7 @@ android:maxLines="1" android:text="隐私协议" android:textColor="@color/white" - android:textSize="23sp" + android:textSize="24sp" android:textStyle="bold" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" diff --git a/app/src/main/res/layout/activity_vip.xml b/app/src/main/res/layout/activity_vip.xml index cd5b9b3..e07bf59 100644 --- a/app/src/main/res/layout/activity_vip.xml +++ b/app/src/main/res/layout/activity_vip.xml @@ -94,6 +94,7 @@ android:textSize="14sp" /> + diff --git a/app/src/main/res/layout/dialog_permissions.xml b/app/src/main/res/layout/dialog_permissions.xml new file mode 100644 index 0000000..b6661c4 --- /dev/null +++ b/app/src/main/res/layout/dialog_permissions.xml @@ -0,0 +1,87 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file