version:1.1.7

bugfixes:
update:增加隐私协议,增加授权弹窗
This commit is contained in:
2025-03-18 09:56:15 +08:00
parent 700e8e9052
commit 82f6472c86
9 changed files with 266 additions and 31 deletions

View File

@@ -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'
}

View File

@@ -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<MainViewModel, ActivityMainBinding> {
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<MainViewModel, ActivityMainBi
}
}
private void checkSelfPermission() {
List<String> 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<String> 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<String> 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();

View File

@@ -17,7 +17,7 @@ public class PrivacyActivity extends BaseMvvmActivity<PrivacyViewModel, Activity
@Override
public boolean setNightMode() {
return true;
return false;
}
@Override
@@ -69,7 +69,7 @@ public class PrivacyActivity extends BaseMvvmActivity<PrivacyViewModel, Activity
default:
case 1:
mViewDataBinding.tvTitle.setText("用户协议");
mViewDataBinding.webView.loadUrl("https://www.uiuios.com/agreement.html?section=1-5");
mViewDataBinding.webView.loadUrl("https://www.uiuios.com/agreement.html?section=1-5&status=1");
break;
}

View File

@@ -1,11 +1,13 @@
package com.uiui.videoplayer.activity.vip;
import android.content.Intent;
import android.view.View;
import androidx.lifecycle.Observer;
import com.uiui.videoplayer.BuildConfig;
import com.uiui.videoplayer.R;
import com.uiui.videoplayer.activity.privacy.PrivacyActivity;
import com.uiui.videoplayer.base.mvvm.BaseMvvmActivity;
import com.uiui.videoplayer.bean.SpaceInfo;
import com.uiui.videoplayer.databinding.ActivityVipBinding;
@@ -83,7 +85,7 @@ public class VipActivity extends BaseMvvmActivity<VipViewModel, ActivityVipBindi
}
public void openEULA(View view) {
startActivity(new Intent(VipActivity.this, PrivacyActivity.class));
}
}

View File

@@ -0,0 +1,101 @@
package com.uiui.videoplayer.dialog;
import android.content.Context;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import com.uiui.videoplayer.R;
public class PermissionsDialog extends AlertDialog {
private Context mContext;
private TextView tv_content;
private TextView tv_cancel;
private TextView tv_confirm;
private String mTitle;
private String mContent;
public void setTitle(String title) {
mTitle = title;
}
public void setContent(String content) {
mContent = content;
}
public PermissionsDialog(@NonNull Context context) {
super(context, R.style.CustomDialog);
this.mContext = context;
}
public PermissionsDialog(@NonNull Context context, int themeResId) {
super(context, themeResId);
this.mContext = context;
}
public PermissionsDialog(@NonNull Context context, boolean cancelable, @Nullable OnCancelListener cancelListener) {
super(context, cancelable, cancelListener);
this.mContext = context;
}
public void setPermissionsCallback(PermissionsCallback callback) {
this.mPermissionsCallback = callback;
}
private PermissionsCallback mPermissionsCallback;
public interface PermissionsCallback {
void onGranted();
void onDenied();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_permissions);
setCanceledOnTouchOutside(false);
tv_content = findViewById(R.id.tv_content);
tv_cancel = findViewById(R.id.tv_cancel);
tv_confirm = findViewById(R.id.tv_confirm);
tv_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mPermissionsCallback != null) {
mPermissionsCallback.onDenied();
}
}
});
tv_confirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mPermissionsCallback != null) {
mPermissionsCallback.onGranted();
}
}
});
setText();
}
@Override
public void show() {
super.show();
setText();
}
private void setText() {
if (!TextUtils.isEmpty(mContent)) {
tv_content.setText(mContent);
}
}
}

View File

@@ -21,7 +21,7 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/constraintLayout2"
android:layout_width="match_parent"
android:layout_height="64dp"
android:layout_height="48dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
@@ -36,8 +36,8 @@
<ImageView
android:id="@+id/iv_back"
android:layout_width="28dp"
android:layout_height="28dp"
android:layout_width="26dp"
android:layout_height="26dp"
android:layout_marginStart="16dp"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
@@ -62,8 +62,8 @@
<ImageView
android:id="@+id/imageView"
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginEnd="16dp"
android:onClick="@{click::toVip}"
android:src="@drawable/icon_info"

View File

@@ -24,14 +24,14 @@
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:layout_width="32dp"
android:layout_height="32dp"
android:layout_width="26dp"
android:layout_height="26dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:adjustViewBounds="true"
android:onClick="@{click::exit}"
android:scaleType="centerCrop"
android:src="@drawable/icon_back"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -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"

View File

@@ -94,6 +94,7 @@
android:textSize="14sp" />
<TextView
android:onClick="@{click::openEULA}"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
@@ -103,6 +104,7 @@
android:text="用户协议"
android:textColor="@color/gray"
android:textSize="14sp" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -0,0 +1,87 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="300dp"
android:layout_height="wrap_content"
android:background="@drawable/background_add"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="权限申请说明"
android:textColor="@color/black"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="32dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="32dp"
app:layout_constraintBottom_toTopOf="@+id/linearLayout5"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_title">
<TextView
android:id="@+id/tv_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="@color/black"
android:textSize="18sp"
tools:text="内容文本" />
</ScrollView>
<LinearLayout
android:id="@+id/linearLayout5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent">
<TextView
android:id="@+id/tv_cancel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="拒绝"
android:textColor="@color/black"
android:textSize="19sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_content" />
<TextView
android:id="@+id/tv_confirm"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="同意"
android:textColor="@color/default_blue"
android:textSize="19sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/tv_content"
app:layout_constraintTop_toBottomOf="@+id/tv_content" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>