Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
See what's new at GitLab
4
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Switch to GitLab Next
Sign in / Register
Toggle navigation
DAVx⁵
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Custom Issue Tracker
Custom Issue Tracker
Labels
Merge Requests
2
Merge Requests
2
Requirements
Requirements
List
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Operations
Operations
Environments
Analytics
Analytics
CI / CD
Code Review
Insights
Issue
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Jobs
Commits
Open sidebar
bitfire web engineering
DAVx⁵
Commits
e0a000cb
Commit
e0a000cb
authored
Apr 02, 2019
by
Ricki Hirner
🐑
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Hotfix: AccountActivity: avoid endless loop of asking for permissions; version bump to 2.4.0.1
parent
7c8f74ab
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
35 additions
and
19 deletions
+35
-19
app/build.gradle
app/build.gradle
+2
-2
app/src/main/java/at/bitfire/davdroid/ui/AccountActivity.kt
app/src/main/java/at/bitfire/davdroid/ui/AccountActivity.kt
+30
-17
app/src/main/res/values/strings.xml
app/src/main/res/values/strings.xml
+3
-0
No files found.
app/build.gradle
View file @
e0a000cb
...
...
@@ -19,7 +19,7 @@ android {
defaultConfig
{
applicationId
"at.bitfire.davdroid"
versionCode
2
79
versionCode
2
80
buildConfigField
"long"
,
"buildTime"
,
System
.
currentTimeMillis
()
+
"L"
buildConfigField
"boolean"
,
"customCerts"
,
"true"
...
...
@@ -43,7 +43,7 @@ android {
flavorDimensions
"distribution"
productFlavors
{
standard
{
versionName
"2.4-ose"
versionName
"2.4
.0.1
-ose"
}
}
...
...
app/src/main/java/at/bitfire/davdroid/ui/AccountActivity.kt
View file @
e0a000cb
...
...
@@ -20,11 +20,9 @@ import android.net.Uri
import
android.os.*
import
android.provider.CalendarContract
import
android.provider.ContactsContract
import
android.provider.Settings
import
android.view.*
import
android.widget.CheckBox
import
android.widget.ImageView
import
android.widget.PopupMenu
import
android.widget.TextView
import
android.widget.*
import
androidx.annotation.MainThread
import
androidx.annotation.UiThread
import
androidx.appcompat.app.AlertDialog
...
...
@@ -40,10 +38,7 @@ import androidx.lifecycle.Observer
import
androidx.lifecycle.ViewModelProviders
import
androidx.recyclerview.widget.LinearLayoutManager
import
androidx.recyclerview.widget.RecyclerView
import
at.bitfire.davdroid.DavService
import
at.bitfire.davdroid.DavUtils
import
at.bitfire.davdroid.R
import
at.bitfire.davdroid.closeCompat
import
at.bitfire.davdroid.*
import
at.bitfire.davdroid.databinding.ActivityAccountBinding
import
at.bitfire.davdroid.log.Logger
import
at.bitfire.davdroid.model.CollectionInfo
...
...
@@ -60,17 +55,19 @@ class AccountActivity: AppCompatActivity(), Toolbar.OnMenuItemClickListener, Pop
companion
object
{
const
val
EXTRA_ACCOUNT
=
"account"
const
val
REQUEST_CODE_RELOAD
=
0
}
private
lateinit
var
model
:
Model
private
lateinit
var
binding
:
ActivityAccountBinding
override
fun
onCreate
(
savedInstanceState
:
Bundle
?)
{
super
.
onCreate
(
savedInstanceState
)
model
=
ViewModelProviders
.
of
(
this
).
get
(
Model
::
class
.
java
)
val
binding
=
DataBindingUtil
.
setContentView
<
ActivityAccountBinding
>(
this
,
R
.
layout
.
activity_account
)
binding
=
DataBindingUtil
.
setContentView
<
ActivityAccountBinding
>(
this
,
R
.
layout
.
activity_account
)
binding
.
lifecycleOwner
=
this
binding
.
model
=
model
...
...
@@ -129,16 +126,29 @@ class AccountActivity: AppCompatActivity(), Toolbar.OnMenuItemClickListener, Pop
})
}
override
fun
onResume
()
{
super
.
onResume
()
reload
()
}
override
fun
onRequestPermissionsResult
(
requestCode
:
Int
,
permissions
:
Array
<
out
String
>,
grantResults
:
IntArray
)
{
if
(
grantResults
.
any
{
it
==
PackageManager
.
PERMISSION_GRANTED
})
// we've got additional permissions; load everything again
// (especially Webcal subscriptions, whose status could not be determined without calendar permission)
reload
()
else
if
(
grantResults
.
any
{
it
==
PackageManager
.
PERMISSION_DENIED
})
{
if
(
permissions
.
map
{
ActivityCompat
.
shouldShowRequestPermissionRationale
(
this
,
it
)
}.
any
())
Snackbar
.
make
(
binding
.
root
,
R
.
string
.
account_missing_permissions
,
Snackbar
.
LENGTH_LONG
)
.
setAction
(
R
.
string
.
account_missing_permissions_fix
)
{
Toast
.
makeText
(
this
,
R
.
string
.
account_missing_permissions_explanation
,
Toast
.
LENGTH_LONG
)
.
show
()
val
settingsIntent
=
Intent
(
Settings
.
ACTION_APPLICATION_DETAILS_SETTINGS
,
Uri
.
fromParts
(
"package"
,
BuildConfig
.
APPLICATION_ID
,
null
))
startActivityForResult
(
settingsIntent
,
REQUEST_CODE_RELOAD
)
}
.
show
()
}
}
override
fun
onActivityResult
(
requestCode
:
Int
,
resultCode
:
Int
,
data
:
Intent
?)
{
super
.
onActivityResult
(
requestCode
,
resultCode
,
data
)
if
(
requestCode
==
REQUEST_CODE_RELOAD
)
reload
()
}
override
fun
onCreateOptionsMenu
(
menu
:
Menu
):
Boolean
{
...
...
@@ -458,7 +468,7 @@ class AccountActivity: AppCompatActivity(), Toolbar.OnMenuItemClickListener, Pop
val
installIntent
=
Intent
(
Intent
.
ACTION_VIEW
,
Uri
.
parse
(
"market://details?id=at.bitfire.icsdroid"
))
if
(
activity
.
packageManager
.
resolveActivity
(
installIntent
,
0
)
!=
null
)
snack
.
setAction
(
R
.
string
.
account_install_icsx5
)
{
activity
.
startActivityForResult
(
installIntent
,
0
)
activity
.
startActivityForResult
(
installIntent
,
REQUEST_CODE_RELOAD
)
}
snack
.
show
()
...
...
@@ -512,7 +522,7 @@ class AccountActivity: AppCompatActivity(), Toolbar.OnMenuItemClickListener, Pop
private
fun
requestSync
()
{
DavUtils
.
requestSync
(
this
,
model
.
account
)
Snackbar
.
make
(
findViewById
(
R
.
id
.
parent
)
,
R
.
string
.
account_synchronizing_now
,
Snackbar
.
LENGTH_LONG
).
show
()
Snackbar
.
make
(
binding
.
root
,
R
.
string
.
account_synchronizing_now
,
Snackbar
.
LENGTH_LONG
).
show
()
}
...
...
@@ -569,6 +579,9 @@ class AccountActivity: AppCompatActivity(), Toolbar.OnMenuItemClickListener, Pop
}
if
(
context
.
bindService
(
Intent
(
context
,
DavService
::
class
.
java
),
svcConn
,
Context
.
BIND_AUTO_CREATE
))
davServiceConn
=
svcConn
reload
()
updateRefreshing
()
}
override
fun
onCleared
()
{
...
...
app/src/main/res/values/strings.xml
View file @
e0a000cb
...
...
@@ -116,6 +116,9 @@
<string
name=
"app_settings_reset_hints_success"
>
All hints will be shown again
</string>
<!-- AccountActivity -->
<string
name=
"account_missing_permissions"
>
Permissions potentially missing
</string>
<string
name=
"account_missing_permissions_fix"
>
Fix
</string>
<string
name=
"account_missing_permissions_explanation"
>
Required permissions: contacts, calendars, (tasks)
</string>
<string
name=
"account_synchronize_now"
>
Synchronize now
</string>
<string
name=
"account_synchronizing_now"
>
Synchronizing now
</string>
<string
name=
"account_settings"
>
Account settings
</string>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment