version:1.1.7
bugfixes: update:增加隐私协议,增加授权弹窗
This commit is contained in:
@@ -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'
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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>
|
||||
|
||||
87
app/src/main/res/layout/dialog_permissions.xml
Normal file
87
app/src/main/res/layout/dialog_permissions.xml
Normal 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>
|
||||
Reference in New Issue
Block a user