Skip to content

Commit

Permalink
add permission
Browse files Browse the repository at this point in the history
  • Loading branch information
loongwind committed Jul 29, 2022
1 parent 05a5c4a commit db8f386
Show file tree
Hide file tree
Showing 13 changed files with 453 additions and 6 deletions.
2 changes: 2 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
package="com.loongwind.ardf.demo" >

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.CAMERA"/>

<application
android:icon="@mipmap/ic_launcher"
Expand Down
3 changes: 0 additions & 3 deletions app/src/main/java/com/loongwind/ardf/demo/MainActivity.kt
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
package com.loongwind.ardf.demo

import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import androidx.databinding.DataBindingUtil
import com.loongwind.ardf.base.BaseBindingViewModelActivity
import com.loongwind.ardf.demo.databinding.ActivityMainBinding

Expand Down
42 changes: 42 additions & 0 deletions app/src/main/java/com/loongwind/ardf/demo/PermissionActivity.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package com.loongwind.ardf.demo

import android.Manifest
import android.content.DialogInterface
import android.content.Intent
import androidx.appcompat.app.AlertDialog
import com.loongwind.ardf.base.BaseBindingActivity
import com.loongwind.ardf.base.BaseBindingViewModelActivity
import com.loongwind.ardf.base.ext.toast
import com.loongwind.ardf.demo.databinding.ActivityPermissionBinding
import com.loongwind.ardf.demo.databinding.TestPageBinding

//泛型类型是布局通过 DataBinding 自动生成的 ViewDataBinding 类型
class PermissionActivity : BaseBindingActivity<ActivityPermissionBinding>() {


override fun initDataBinding(binding: ActivityPermissionBinding) {
val permissions = arrayOf(Manifest.permission.CALL_PHONE, Manifest.permission.CAMERA)
binding.requestPermission.setOnClickListener {
requestPermissions(arrayOf(Manifest.permission.CALL_PHONE, Manifest.permission.CAMERA),
showPermanentlyDeniedDialog = true,
onDenied = {
toast("权限申请失败")
}) {
toast("权限申请成功")
}


val permissions = arrayOf(Manifest.permission.CALL_PHONE, Manifest.permission.CAMERA)
val onDenied = {
toast("权限申请失败")
}
requestPermissions(
permissions,
showPermanentlyDeniedDialog = true,
onDenied = onDenied) {
toast("权限申请成功")
}
}
}

}
21 changes: 21 additions & 0 deletions app/src/main/res/layout/activity_permission.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">


<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
android:padding="10dp">

<TextView
android:id="@+id/request_permission"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="15dp"
android:textSize="30sp"
android:text="点击申请权限"/>

</LinearLayout>
</layout>
1 change: 1 addition & 0 deletions base/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ dependencies {
implementation 'androidx.appcompat:appcompat:1.4.2'
api "io.insert-koin:koin-core:3.2.0"
api "io.insert-koin:koin-android:3.2.0"
api 'pub.devrel:easypermissions:3.0.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
Expand Down
74 changes: 74 additions & 0 deletions base/src/main/java/com/loongwind/ardf/base/BaseActivity.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package com.loongwind.ardf.base

import android.content.Intent
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.loongwind.ardf.base.permission.PermissionHelper
import pub.devrel.easypermissions.EasyPermissions

/**
*Author: chengminghui
*Time: 2019-09-03
*Description: xxx
*/
open class BaseActivity : AppCompatActivity(), EasyPermissions.PermissionCallbacks,
EasyPermissions.RationaleCallbacks {


fun requestPermissions(
permissions: Array<out String>,
showPermanentlyDeniedDialog: Boolean = false,
onDenied: (() -> Unit)? = null,
onGranted: () -> Unit
) {
PermissionHelper.requestPermissions(this, permissions, showPermanentlyDeniedDialog, onDenied, onGranted)
}




override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this)
}


/**
* 权限申请失败
*/
override fun onPermissionsDenied(requestCode: Int, perms: MutableList<String>) {
PermissionHelper.onPermissionsDenied(this, requestCode, perms)
}


/**
* 权限申请成功
*/
override fun onPermissionsGranted(requestCode: Int, perms: MutableList<String>) {
PermissionHelper.onGranted(requestCode, perms)
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
PermissionHelper.onActivityResult(this, requestCode, resultCode, data)
}

/**
* 权限申请提示弹出框点击拒绝
*/
override fun onRationaleDenied(requestCode: Int) {
PermissionHelper.onRationaleDenied(requestCode)
}

/**
* 权限申请提示框点击确定
*/
override fun onRationaleAccepted(requestCode: Int) {

}

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package com.loongwind.ardf.base

import android.os.Bundle
import android.view.LayoutInflater
import androidx.appcompat.app.AppCompatActivity
import androidx.databinding.ViewDataBinding
import com.loongwind.ardf.base.utils.getBindingType

Expand All @@ -13,7 +12,7 @@ import com.loongwind.ardf.base.utils.getBindingType
* @CreateDate: 2020/8/3 11:40 PM
*
*/
abstract class BaseBindingActivity<BINDING :ViewDataBinding>:AppCompatActivity() {
abstract class BaseBindingActivity<BINDING :ViewDataBinding>:BaseActivity() {


override fun onCreate(savedInstanceState: Bundle?) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import com.loongwind.ardf.base.utils.getBindingType
* @CreateDate: 2020/8/4 11:46 PM
*
*/
abstract class BaseBindingFragment<BINDING:ViewDataBinding>: Fragment() {
abstract class BaseBindingFragment<BINDING:ViewDataBinding>: BaseFragment() {

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
//创建 ViewDataBinding 实例
Expand Down
72 changes: 72 additions & 0 deletions base/src/main/java/com/loongwind/ardf/base/BaseFragment.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
package com.loongwind.ardf.base

import android.content.Intent
import androidx.fragment.app.Fragment
import com.loongwind.ardf.base.permission.PermissionHelper
import pub.devrel.easypermissions.EasyPermissions

/**
*Author: chengminghui
*Time: 2019-09-03
*Description: xxx
*/
open class BaseFragment : Fragment() , EasyPermissions.PermissionCallbacks,
EasyPermissions.RationaleCallbacks{


fun requestPermissions(
permissions: Array<out String>,
showPermanentlyDeniedDialog: Boolean = false,
onDenied: (() -> Unit)? = null,
onGranted: () -> Unit
) {
PermissionHelper.requestPermissions(this, permissions, showPermanentlyDeniedDialog, onDenied, onGranted)
}

override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this)
}

/**
* 权限申请失败
*/
override fun onPermissionsDenied(requestCode: Int, perms: MutableList<String>) {
PermissionHelper.onPermissionsDenied(this, requestCode, perms)
}


/**
* 权限申请成功
*/
override fun onPermissionsGranted(requestCode: Int, perms: MutableList<String>) {
PermissionHelper.onGranted(requestCode, perms)
}

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
context?.let {
PermissionHelper.onActivityResult(it, requestCode, resultCode, data)
}

}

/**
* 权限申请提示弹出框点击拒绝
*/
override fun onRationaleDenied(requestCode: Int) {
PermissionHelper.onRationaleDenied(requestCode)
}

/**
* 权限申请提示框点击确定
*/
override fun onRationaleAccepted(requestCode: Int) {

}

}
22 changes: 22 additions & 0 deletions base/src/main/java/com/loongwind/ardf/base/BaseViewModel.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.loongwind.ardf.base

import androidx.databinding.Observable
import androidx.databinding.ObservableInt
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.loongwind.ardf.base.event.EVENT_BACK
Expand All @@ -14,6 +16,7 @@ import com.loongwind.ardf.base.event.Event
*/
open class BaseViewModel: ViewModel() {
var isLoading = MutableLiveData<Boolean>()
private var showLoadingCount = ObservableInt(0)
// 提示文字
var hintText = MutableLiveData<Event<String>>()
// 提示文字资源
Expand All @@ -22,6 +25,17 @@ open class BaseViewModel: ViewModel() {
// 事件
var event = MutableLiveData<Event<Int>>()

init {
showLoadingCount.addOnPropertyChangedCallback(object : Observable.OnPropertyChangedCallback(){
override fun onPropertyChanged(sender: Observable?, propertyId: Int) {
val isShowLoading = showLoadingCount.get() > 0
if(isShowLoading != isLoading.value){
isLoading.value = isShowLoading
}
}
})
}

protected fun postHintText(msg: String) {
hintText.value = Event(msg)
}
Expand All @@ -40,4 +54,12 @@ open class BaseViewModel: ViewModel() {
fun back(){
postEvent(EVENT_BACK)
}

private fun showLoading(){
showLoadingCount.set(showLoadingCount.get() + 1)
}

private fun dismissLoading(){
showLoadingCount.set(showLoadingCount.get() - 1)
}
}
Loading

0 comments on commit db8f386

Please sign in to comment.