adding some permission handling

This commit is contained in:
tibbi 2020-05-07 23:14:15 +02:00
parent e604a3e88b
commit d55bc9104a
5 changed files with 58 additions and 10 deletions

View File

@ -4,8 +4,8 @@
package="com.simplemobiletools.dialer"
android:installLocation="auto">
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission
android:name="android.permission.USE_FINGERPRINT"

View File

@ -9,9 +9,7 @@ import android.view.Menu
import android.view.MenuItem
import androidx.viewpager.widget.ViewPager
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.ContactsHelper
import com.simplemobiletools.commons.helpers.PERMISSION_GET_ACCOUNTS
import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS
import com.simplemobiletools.commons.helpers.*
import com.simplemobiletools.commons.models.FAQItem
import com.simplemobiletools.dialer.BuildConfig
import com.simplemobiletools.dialer.R
@ -159,7 +157,7 @@ class MainActivity : SimpleActivity() {
private fun getAllFragments() = arrayListOf(contacts_fragment)
private fun launchAbout() {
val licenses = 0
val licenses = LICENSE_GLIDE or LICENSE_INDICATOR_FAST_SCROLL
val faqItems = arrayListOf(
FAQItem(R.string.faq_2_title_commons, R.string.faq_2_text_commons),

View File

@ -4,21 +4,38 @@ import android.content.Context
import android.util.AttributeSet
import com.reddit.indicatorfastscroll.FastScrollItemIndicator
import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.ContactsHelper
import com.simplemobiletools.commons.helpers.PERMISSION_READ_CONTACTS
import com.simplemobiletools.commons.models.SimpleContact
import com.simplemobiletools.dialer.R
import com.simplemobiletools.dialer.activities.SimpleActivity
import com.simplemobiletools.dialer.adapters.ContactsAdapter
import com.simplemobiletools.dialer.extensions.config
import kotlinx.android.synthetic.main.fragment_letters_layout.view.*
import kotlinx.android.synthetic.main.fragment_recents.view.*
import java.util.*
class ContactsFragment(context: Context, attributeSet: AttributeSet) : MyViewPagerFragment(context, attributeSet) {
override fun setupFragment() {
val placeholderResId = if (context.hasPermission(PERMISSION_READ_CONTACTS)) {
R.string.no_contacts_found
} else {
R.string.could_not_access_contacts
}
fragment_placeholder.text = context.getString(placeholderResId)
val placeholderActionResId = if (context.hasPermission(PERMISSION_READ_CONTACTS)) {
R.string.create_new
} else {
R.string.request_access
}
fragment_placeholder_2.apply {
text = context.getString(placeholderActionResId)
setTextColor(context.config.primaryColor)
underlineText()
setOnClickListener {
requestReadContactsPermission()
}
}
@ -56,4 +73,19 @@ class ContactsFragment(context: Context, attributeSet: AttributeSet) : MyViewPag
}
})
}
private fun requestReadContactsPermission() {
activity?.handlePermission(PERMISSION_READ_CONTACTS) {
if (it) {
fragment_placeholder.text = context.getString(R.string.no_contacts_found)
fragment_placeholder_2.text = context.getString(R.string.create_new)
ContactsHelper(context).getAvailableContacts { contacts ->
activity?.runOnUiThread {
refreshContacts(contacts)
}
}
}
}
}
}

View File

@ -6,6 +6,7 @@ import com.simplemobiletools.commons.extensions.*
import com.simplemobiletools.commons.helpers.PERMISSION_READ_CALL_LOG
import com.simplemobiletools.dialer.R
import com.simplemobiletools.dialer.extensions.config
import com.simplemobiletools.dialer.helpers.RecentsHelper
import com.simplemobiletools.dialer.models.RecentCall
import kotlinx.android.synthetic.main.fragment_recents.view.*
@ -18,12 +19,11 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
}
recents_placeholder.text = context.getString(placeholderResId)
recents_placeholder_2.apply {
setTextColor(context.config.primaryColor)
underlineText()
setOnClickListener {
requestCallLogPermission()
}
}
}
@ -39,4 +39,19 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
recents_list.beVisible()
}
}
private fun requestCallLogPermission() {
activity?.handlePermission(PERMISSION_READ_CALL_LOG) {
if (it) {
recents_placeholder.text = context.getString(R.string.no_previous_calls)
recents_placeholder_2.beGone()
RecentsHelper(context).getRecentCalls { recents ->
activity?.runOnUiThread {
updateRecents(recents)
}
}
}
}
}
}

View File

@ -2,6 +2,9 @@
<string name="app_name">Simple Dialer</string>
<string name="app_launcher_name">Dialer</string>
<!-- Contacts -->
<string name="could_not_access_contacts">Could not access your contacts</string>
<!-- Recents -->
<string name="no_previous_calls">No previous calls have been found</string>
<string name="could_not_access_the_call_history">Could not access the call history</string>