Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
N
NewParkAPP
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
YONG-LIN SU
NewParkAPP
Commits
108b1de2
Commit
108b1de2
authored
Jul 29, 2022
by
YONG-LIN SU
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增權限請求功能
parent
b8e8a9af
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
67 additions
and
7 deletions
+67
-7
InfoDatabase.java
...n/java/ecom/android/newparkapp/database/InfoDatabase.java
+2
-1
MainActivity.java
.../main/java/ecom/android/newparkapp/view/MainActivity.java
+65
-6
No files found.
app/src/main/java/ecom/android/newparkapp/database/InfoDatabase.java
View file @
108b1de2
...
...
@@ -34,7 +34,8 @@ import ecom.android.newparkapp.entity.VehicleColor;
import
ecom.android.newparkapp.entity.VehicleType
;
// DataBase 一個資料庫一個,並涵蓋多個資料表
@Database
(
entities
=
{
Case
.
class
,
Road
.
class
,
Space
.
class
,
SpaceRate
.
class
,
SpaceStatus
.
class
,
SpaceType
.
class
,
User
.
class
,
UserPermission
.
class
,
VehicleBrand
.
class
,
VehicleColor
.
class
,
VehicleType
.
class
},
version
=
1
)
@Database
(
entities
=
{
Case
.
class
,
Road
.
class
,
Space
.
class
,
SpaceRate
.
class
,
SpaceStatus
.
class
,
SpaceType
.
class
,
User
.
class
,
UserPermission
.
class
,
VehicleBrand
.
class
,
VehicleColor
.
class
,
VehicleType
.
class
},
version
=
1
)
@TypeConverters
({
LocationConverter
.
class
,
TimestampConverter
.
class
})
public
abstract
class
InfoDatabase
extends
RoomDatabase
{
public
abstract
CaseDao
caseDao
();
...
...
app/src/main/java/ecom/android/newparkapp/view/MainActivity.java
View file @
108b1de2
package
ecom
.
android
.
newparkapp
.
view
;
import
androidx.appcompat.app.AppCompatActivity
;
import
androidx.databinding.DataBindingUtil
;
import
androidx.lifecycle.ViewModelProvider
;
import
static
android
.
Manifest
.
permission
.
ACCESS_COARSE_LOCATION
;
import
static
android
.
Manifest
.
permission
.
ACCESS_FINE_LOCATION
;
import
static
android
.
Manifest
.
permission
.
ACCESS_LOCATION_EXTRA_COMMANDS
;
import
static
android
.
Manifest
.
permission
.
READ_EXTERNAL_STORAGE
;
import
static
android
.
Manifest
.
permission
.
WRITE_EXTERNAL_STORAGE
;
import
android.content.Intent
;
import
android.content.pm.PackageManager
;
import
android.os.Bundle
;
import
android.widget.Toast
;
import
androidx.activity.result.ActivityResultLauncher
;
import
androidx.activity.result.contract.ActivityResultContracts
;
import
androidx.appcompat.app.AppCompatActivity
;
import
androidx.core.app.ActivityCompat
;
import
androidx.databinding.DataBindingUtil
;
import
androidx.lifecycle.MutableLiveData
;
import
androidx.lifecycle.ViewModelProvider
;
import
java.util.Map
;
import
ecom.android.newparkapp.R
;
import
ecom.android.newparkapp.databinding.ActivityMainBinding
;
import
ecom.android.newparkapp.repository.InfoRepository
;
import
ecom.android.newparkapp.viewModel.UserViewModel
;
public
class
MainActivity
extends
AppCompatActivity
{
...
...
@@ -18,19 +30,66 @@ public class MainActivity extends AppCompatActivity {
private
ActivityMainBinding
dataBinding
;
private
ViewModelProvider
viewModelProvider
;
private
UserViewModel
userViewModel
;
private
ActivityResultLauncher
<
String
[]>
requestPermissionLauncher
;
private
String
[]
permissions
=
new
String
[]{
WRITE_EXTERNAL_STORAGE
,
READ_EXTERNAL_STORAGE
,
ACCESS_COARSE_LOCATION
,
ACCESS_FINE_LOCATION
,
ACCESS_LOCATION_EXTRA_COMMANDS
};
private
MutableLiveData
<
Boolean
>
hasPermissions
=
new
MutableLiveData
<>();
@Override
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
dataBinding
=
DataBindingUtil
.
setContentView
(
this
,
R
.
layout
.
activity_main
);
viewModelProvider
=
new
ViewModelProvider
(
this
);
userViewModel
=
viewModelProvider
.
get
(
UserViewModel
.
class
);
userViewModel
.
setCurrentUser
();
dataBinding
.
setUserViewModel
(
userViewModel
);
eventBinding
();
resultLauncherRegister
();
// 檢查權限
permissionRequest
();
hasPermissions
.
observe
(
this
,
has
->
{
if
(
has
){
eventBinding
();
}
});
}
private
void
permissionRequest
(){
// 參考資料 https://developer.android.com/training/permissions/requesting
hasPermissions
.
setValue
(
false
);
if
(!
checkPermissions
()){
requestPermissionLauncher
.
launch
(
permissions
);
}
else
{
hasPermissions
.
setValue
(
true
);
}
}
private
boolean
checkPermissions
(){
boolean
ret
=
true
;
for
(
String
permission
:
permissions
){
if
(
ActivityCompat
.
checkSelfPermission
(
this
,
permission
)
!=
PackageManager
.
PERMISSION_GRANTED
){
ret
=
false
;
break
;
}
}
return
ret
;
}
private
void
resultLauncherRegister
(){
requestPermissionLauncher
=
registerForActivityResult
(
new
ActivityResultContracts
.
RequestMultiplePermissions
(),
results
->
{
for
(
Map
.
Entry
<
String
,
Boolean
>
result
:
results
.
entrySet
())
{
if
(!
result
.
getValue
()){
return
;
}
}
hasPermissions
.
setValue
(
true
);
}
);
}
/**
...
...
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