Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Sign in / Register
Toggle navigation
S
Scan QR Code Barcode Reader
Project
Project
Details
Activity
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
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wanglei
Scan QR Code Barcode Reader
Commits
c41c9a24
Commit
c41c9a24
authored
Jan 03, 2025
by
wanglei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
...
parent
59d0e3ae
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
594 additions
and
16 deletions
+594
-16
AndroidManifest.xml
app/src/main/AndroidManifest.xml
+6
-7
ContractCodeActivity.kt
...n/java/com/base/scanqr/ui/contact/ContractCodeActivity.kt
+134
-2
HistoryAdapter.kt
app/src/main/java/com/base/scanqr/ui/main/HistoryAdapter.kt
+4
-1
HistoryFragment.kt
app/src/main/java/com/base/scanqr/ui/main/HistoryFragment.kt
+7
-0
HistoryViewModel.kt
...src/main/java/com/base/scanqr/ui/main/HistoryViewModel.kt
+7
-1
ScanFragment.kt
app/src/main/java/com/base/scanqr/ui/main/ScanFragment.kt
+30
-0
StartActivity.kt
app/src/main/java/com/base/scanqr/ui/start/StartActivity.kt
+4
-4
IntentUtils.kt
app/src/main/java/com/base/scanqr/utils/IntentUtils.kt
+25
-0
PermissionUtils.kt
app/src/main/java/com/base/scanqr/utils/PermissionUtils.kt
+4
-0
activity_contract_code.xml
app/src/main/res/layout/activity_contract_code.xml
+373
-1
No files found.
app/src/main/AndroidManifest.xml
View file @
c41c9a24
...
@@ -4,9 +4,10 @@
...
@@ -4,9 +4,10 @@
<uses-feature
<uses-feature
android:name=
"android.hardware.camera"
android:name=
"android.hardware.camera"
android:required=
"false"
/>
<!-- 获取wifi列表 -->
android:required=
"false"
/>
<!-- 获取wifi列表 -->
<uses-feature
<!-- 获取wifi列表 -->
android:name=
"android.hardware.telephony"
android:required=
"false"
/>
<!---->
<!-- 获取wifi列表 -->
<!-- 获取wifi列表 -->
<uses-permission
android:name=
"android.permission.INTERNET"
/>
<uses-permission
android:name=
"android.permission.INTERNET"
/>
<uses-permission
android:name=
"android.permission.ACCESS_NETWORK_STATE"
/>
<uses-permission
android:name=
"android.permission.ACCESS_NETWORK_STATE"
/>
...
@@ -15,15 +16,13 @@
...
@@ -15,15 +16,13 @@
<uses-permission
android:name=
"android.permission.CHANGE_WIFI_STATE"
/>
<uses-permission
android:name=
"android.permission.CHANGE_WIFI_STATE"
/>
<uses-permission
android:name=
"android.permission.ACCESS_COARSE_LOCATION"
/>
<uses-permission
android:name=
"android.permission.ACCESS_COARSE_LOCATION"
/>
<uses-permission
android:name=
"android.permission.ACCESS_FINE_LOCATION"
/>
<uses-permission
android:name=
"android.permission.ACCESS_FINE_LOCATION"
/>
<uses-permission
android:name=
"android.permission.CAMERA"
/>
<!-- 前台服务 -->
<uses-permission
android:name=
"android.permission.CAMERA"
/>
<!---->
<!-- 前台服务 -->
<!-- 前台服务 -->
<!-- 前台服务 -->
<!-- 前台服务 -->
<!-- 前台服务 -->
<uses-permission
android:name=
"android.permission.FOREGROUND_SERVICE"
/>
<uses-permission
android:name=
"android.permission.FOREGROUND_SERVICE"
/>
<uses-permission
android:name=
"android.permission.FOREGROUND_SERVICE_DATA_SYNC"
/>
<uses-permission
android:name=
"android.permission.FOREGROUND_SERVICE_DATA_SYNC"
/>
<uses-permission
android:name=
"android.permission.POST_NOTIFICATIONS"
/>
<uses-permission
android:name=
"android.permission.POST_NOTIFICATIONS"
/>
<uses-permission
android:name=
"android.permission.READ_CONTACTS"
/>
<uses-permission
android:name=
"android.permission.READ_CONTACTS"
/>
<uses-permission
android:name=
"android.permission.WRITE_CONTACTS"
/>
<uses-permission
android:name=
"android.permission.CALL_PHONE"
/>
<uses-permission
android:name=
"android.permission.CALL_PHONE"
/>
<application
<application
...
...
app/src/main/java/com/base/scanqr/ui/contact/ContractCodeActivity.kt
View file @
c41c9a24
package
com.base.scanqr.ui.contact
package
com.base.scanqr.ui.contact
import
android.Manifest
import
android.os.Environment
import
androidx.activity.addCallback
import
androidx.core.view.updatePadding
import
com.base.scanqr.R
import
com.base.scanqr.ads.AdsMgr
import
com.base.scanqr.ads.AdsShowCallBack
import
com.base.scanqr.base.BaseActivity
import
com.base.scanqr.base.BaseActivity
import
com.base.scanqr.databinding.ActivityContractBinding
import
com.base.scanqr.bean.ContractUIBean
import
com.base.scanqr.bean.FunctionUIBean
import
com.base.scanqr.databinding.ActivityContractCodeBinding
import
com.base.scanqr.ui.widget.InputNameDialog.showInputNameDialog
import
com.base.scanqr.utils.BarUtils
import
com.base.scanqr.utils.BitmapUtils.saveBitmapToFile
import
com.base.scanqr.utils.ClipboardUtils.copyText
import
com.base.scanqr.utils.IntentUtils.intentShareImage
import
com.base.scanqr.utils.IntentUtils.intentWriteContract
import
com.base.scanqr.utils.LogEx
import
com.base.scanqr.utils.QRCodeUtils.generateQRCode
import
com.base.scanqr.utils.SpJsonUtils
import
com.base.scanqr.utils.ToastUtils.toast
import
com.google.gson.Gson
import
java.io.File
class
ContractCodeActivity
:
BaseActivity
<
ActivityContractBinding
>(
ActivityContractBinding
::
inflate
)
{
class
ContractCodeActivity
:
BaseActivity
<
ActivityContractCodeBinding
>(
ActivityContractCodeBinding
::
inflate
)
{
private
var
contractUIBean
=
ContractUIBean
()
private
var
tempImage
:
String
=
""
private
var
contractQrString
=
""
override
fun
onResumeOneShoot
()
{
super
.
onResumeOneShoot
()
val
flag
=
changeLanguage
()
if
(
flag
)
return
AdsMgr
.
showBanner
(
binding
.
flBanner
,
false
)
}
override
fun
initView
()
{
override
fun
initView
()
{
super
.
initView
()
super
.
initView
()
binding
.
clTop
.
updatePadding
(
top
=
BarUtils
.
getStatusBarHeight
())
AdsMgr
.
showNative
(
binding
.
flAd
,
R
.
layout
.
layout_admob_item
)
val
data
=
intent
.
extras
?.
getString
(
"data"
)
data
?.
let
{
contractUIBean
=
Gson
().
fromJson
(
data
,
ContractUIBean
::
class
.
java
)
binding
.
tvName
.
text
=
contractUIBean
.
n
binding
.
tvTel
.
text
=
contractUIBean
.
tel
binding
.
tvEmail
.
text
=
contractUIBean
.
email
binding
.
tvAddress
.
text
=
contractUIBean
.
adr
}
Thread
{
contractQrString
=
ContractUIBean
.
createContractQrString
(
contractUIBean
)
LogEx
.
logDebug
(
TAG
,
"contractQrString=$contractQrString"
)
val
bitmap
=
generateQRCode
(
contractQrString
,
735
,
735
,
5
)
runOnUiThread
{
binding
.
ivQr
.
setImageBitmap
(
bitmap
)
val
file
=
File
(
cacheDir
,
System
.
currentTimeMillis
().
toString
()
+
".jpg"
)
bitmap
?.
let
{
val
flag
=
saveBitmapToFile
(
it
,
file
.
absolutePath
)
LogEx
.
logDebug
(
TAG
,
"flag=$flag tempImage=${file.absolutePath}"
)
if
(
flag
)
{
tempImage
=
file
.
absolutePath
}
}
if
(
contractUIBean
.
needCreate
)
{
contractUIBean
.
needCreate
=
false
SpJsonUtils
.
addJsonBean
<
ContractUIBean
>(
FunctionUIBean
.
KEY_CONTACT
,
contractUIBean
)
}
}
}.
start
()
}
}
override
fun
initListener
()
{
override
fun
initListener
()
{
super
.
initListener
()
super
.
initListener
()
onBackPressedDispatcher
.
addCallback
{
AdsMgr
.
showInsert
(
this
@ContractCodeActivity
,
false
,
object
:
AdsShowCallBack
()
{
override
fun
close
(
where
:
Int
)
{
finishToMainTop
()
}
override
fun
failed
(
where
:
Int
)
{
finishToMainTop
()
}
override
fun
googleFailed
(
where
:
Int
)
{
finishToMainTop
()
}
})
}
}
binding
.
flBack
.
setOnClickListener
{
onBackPressedDispatcher
.
onBackPressed
()
}
binding
.
llShare
.
setOnClickListener
{
val
intent
=
intentShareImage
(
this
,
tempImage
)
runCatching
{
startActivity
(
intent
)
}
}
binding
.
llPdf
.
setOnClickListener
{
toast
(
"没实现"
)
}
binding
.
llDownload
.
setOnClickListener
{
kotlin
.
runCatching
{
val
appFile
=
File
(
Environment
.
getExternalStoragePublicDirectory
(
Environment
.
DIRECTORY_DOWNLOADS
),
this
.
resources
.
getString
(
R
.
string
.
app_name
)
)
if
(!
appFile
.
exists
())
appFile
.
mkdirs
()
var
newName
=
File
(
tempImage
).
name
showInputNameDialog
(
newName
)
{
name
->
if
(
name
.
endsWith
(
".jpg"
))
{
name
.
also
{
newName
=
it
}
}
else
{
newName
=
"$name.jpg"
}
val
downFile
=
File
(
appFile
,
newName
)
downFile
.
createNewFile
()
File
(
tempImage
).
copyTo
(
downFile
,
true
)
toast
(
"Save to:${appFile.absolutePath}"
,
true
)
}
}
}
binding
.
llCopy
.
setOnClickListener
{
copyText
(
TAG
,
contractQrString
)
toast
(
"Copied to clipboard"
,
true
)
}
launcher
.
launch
(
arrayOf
(
Manifest
.
permission
.
WRITE_CONTACTS
))
{
}
binding
.
flSearch
.
setOnClickListener
{
try
{
val
intent
=
intentWriteContract
(
contractUIBean
)
startActivity
(
intent
)
}
catch
(
e
:
Exception
)
{
toast
(
"No application was found to handle the add contract"
,
true
)
}
}
}
}
}
\ No newline at end of file
app/src/main/java/com/base/scanqr/ui/main/HistoryAdapter.kt
View file @
c41c9a24
...
@@ -6,6 +6,7 @@ import android.view.ViewGroup
...
@@ -6,6 +6,7 @@ import android.view.ViewGroup
import
com.base.scanqr.R
import
com.base.scanqr.R
import
com.base.scanqr.ads.AdsMgr
import
com.base.scanqr.ads.AdsMgr
import
com.base.scanqr.bean.AdScanBean
import
com.base.scanqr.bean.AdScanBean
import
com.base.scanqr.bean.ContractUIBean
import
com.base.scanqr.bean.EmailUIBean
import
com.base.scanqr.bean.EmailUIBean
import
com.base.scanqr.bean.EventUIBean
import
com.base.scanqr.bean.EventUIBean
import
com.base.scanqr.bean.FunctionUIBean.Companion.KEY_CONTACT
import
com.base.scanqr.bean.FunctionUIBean.Companion.KEY_CONTACT
...
@@ -85,7 +86,9 @@ class HistoryAdapter : BaseQuickAdapter<ScanBean, CommonViewHolder>() {
...
@@ -85,7 +86,9 @@ class HistoryAdapter : BaseQuickAdapter<ScanBean, CommonViewHolder>() {
}
}
KEY_CONTACT
->
{
KEY_CONTACT
->
{
if
(
item
is
ContractUIBean
)
{
binding
.
ivIcon
.
setImageResource
(
R
.
mipmap
.
h_contact
)
}
}
}
KEY_WEBSITE
->
{
KEY_WEBSITE
->
{
...
...
app/src/main/java/com/base/scanqr/ui/main/HistoryFragment.kt
View file @
c41c9a24
...
@@ -12,6 +12,7 @@ import com.base.scanqr.bean.AdScanBean
...
@@ -12,6 +12,7 @@ import com.base.scanqr.bean.AdScanBean
import
com.base.scanqr.bean.FunctionUIBean
import
com.base.scanqr.bean.FunctionUIBean
import
com.base.scanqr.bean.ScanBean
import
com.base.scanqr.bean.ScanBean
import
com.base.scanqr.databinding.FragmentHistoryBinding
import
com.base.scanqr.databinding.FragmentHistoryBinding
import
com.base.scanqr.ui.contact.ContractCodeActivity
import
com.base.scanqr.ui.email.EmailCodeActivity
import
com.base.scanqr.ui.email.EmailCodeActivity
import
com.base.scanqr.ui.event.EventCodeActivity
import
com.base.scanqr.ui.event.EventCodeActivity
import
com.base.scanqr.ui.product.ProductCodeActivity
import
com.base.scanqr.ui.product.ProductCodeActivity
...
@@ -113,6 +114,12 @@ class HistoryFragment : BaseFragment<FragmentHistoryBinding>(FragmentHistoryBind
...
@@ -113,6 +114,12 @@ class HistoryFragment : BaseFragment<FragmentHistoryBinding>(FragmentHistoryBind
putExtra
(
"data"
,
Gson
().
toJson
(
item
))
putExtra
(
"data"
,
Gson
().
toJson
(
item
))
})
})
}
}
FunctionUIBean
.
KEY_CONTACT
->
{
activity
?.
startActivity
(
Intent
(
activity
,
ContractCodeActivity
::
class
.
java
).
apply
{
putExtra
(
"data"
,
Gson
().
toJson
(
item
))
})
}
}
}
}
}
...
...
app/src/main/java/com/base/scanqr/ui/main/HistoryViewModel.kt
View file @
c41c9a24
...
@@ -2,6 +2,7 @@ package com.base.scanqr.ui.main
...
@@ -2,6 +2,7 @@ package com.base.scanqr.ui.main
import
androidx.lifecycle.ViewModel
import
androidx.lifecycle.ViewModel
import
androidx.lifecycle.viewModelScope
import
androidx.lifecycle.viewModelScope
import
com.base.scanqr.bean.ContractUIBean
import
com.base.scanqr.bean.EmailUIBean
import
com.base.scanqr.bean.EmailUIBean
import
com.base.scanqr.bean.EventUIBean
import
com.base.scanqr.bean.EventUIBean
import
com.base.scanqr.bean.FunctionUIBean
import
com.base.scanqr.bean.FunctionUIBean
...
@@ -42,6 +43,8 @@ class HistoryViewModel() : ViewModel() {
...
@@ -42,6 +43,8 @@ class HistoryViewModel() : ViewModel() {
eventList
.
forEach
{
it
.
listContent
=
it
.
summary
}
eventList
.
forEach
{
it
.
listContent
=
it
.
summary
}
val
telephoneList
=
SpJsonUtils
.
getSpJsonList
<
TelephoneUIBean
>(
FunctionUIBean
.
KEY_TELEPHONE
)
val
telephoneList
=
SpJsonUtils
.
getSpJsonList
<
TelephoneUIBean
>(
FunctionUIBean
.
KEY_TELEPHONE
)
telephoneList
.
forEach
{
it
.
listContent
=
it
.
tel
}
telephoneList
.
forEach
{
it
.
listContent
=
it
.
tel
}
val
contractList
=
SpJsonUtils
.
getSpJsonList
<
ContractUIBean
>(
FunctionUIBean
.
KEY_CONTACT
)
contractList
.
forEach
{
it
.
listContent
=
it
.
n
}
historyList
.
addAll
(
wifiList
)
historyList
.
addAll
(
wifiList
)
historyList
.
addAll
(
textList
)
historyList
.
addAll
(
textList
)
...
@@ -50,6 +53,7 @@ class HistoryViewModel() : ViewModel() {
...
@@ -50,6 +53,7 @@ class HistoryViewModel() : ViewModel() {
historyList
.
addAll
(
productList
)
historyList
.
addAll
(
productList
)
historyList
.
addAll
(
eventList
)
historyList
.
addAll
(
eventList
)
historyList
.
addAll
(
telephoneList
)
historyList
.
addAll
(
telephoneList
)
historyList
.
addAll
(
contractList
)
historyList
.
forEach
{
historyList
.
forEach
{
LogEx
.
logDebug
(
TAG
,
"${it.scanType} ${it.createTime} ${it.createType} ${it.listContent}"
)
LogEx
.
logDebug
(
TAG
,
"${it.scanType} ${it.createTime} ${it.createType} ${it.listContent}"
)
...
@@ -85,7 +89,9 @@ class HistoryViewModel() : ViewModel() {
...
@@ -85,7 +89,9 @@ class HistoryViewModel() : ViewModel() {
}
}
FunctionUIBean
.
KEY_CONTACT
->
{
FunctionUIBean
.
KEY_CONTACT
->
{
SpJsonUtils
.
removeJsonBean
<
ContractUIBean
>(
bean
.
scanType
,
bean
as
ContractUIBean
,
removeIf
=
{
it1
,
it2
->
it1
.
createTime
==
it2
.
createTime
})
}
}
FunctionUIBean
.
KEY_WEBSITE
->
{
FunctionUIBean
.
KEY_WEBSITE
->
{
...
...
app/src/main/java/com/base/scanqr/ui/main/ScanFragment.kt
View file @
c41c9a24
...
@@ -13,6 +13,8 @@ import com.base.scanqr.R
...
@@ -13,6 +13,8 @@ import com.base.scanqr.R
import
com.base.scanqr.ads.AdsMgr
import
com.base.scanqr.ads.AdsMgr
import
com.base.scanqr.ads.AdsShowCallBack
import
com.base.scanqr.ads.AdsShowCallBack
import
com.base.scanqr.base.BaseFragment
import
com.base.scanqr.base.BaseFragment
import
com.base.scanqr.bean.ContractUIBean.Companion.createContractBean
import
com.base.scanqr.bean.ContractUIBean.Companion.isContractQR
import
com.base.scanqr.bean.EmailUIBean.Companion.createEmailBean
import
com.base.scanqr.bean.EmailUIBean.Companion.createEmailBean
import
com.base.scanqr.bean.EmailUIBean.Companion.isEmailQR
import
com.base.scanqr.bean.EmailUIBean.Companion.isEmailQR
import
com.base.scanqr.bean.EventUIBean.Companion.createEventBean
import
com.base.scanqr.bean.EventUIBean.Companion.createEventBean
...
@@ -28,6 +30,7 @@ import com.base.scanqr.bean.WifiUIBean.Companion.createWifiBean
...
@@ -28,6 +30,7 @@ import com.base.scanqr.bean.WifiUIBean.Companion.createWifiBean
import
com.base.scanqr.bean.WifiUIBean.Companion.isWifiQR
import
com.base.scanqr.bean.WifiUIBean.Companion.isWifiQR
import
com.base.scanqr.databinding.FragmentScanBinding
import
com.base.scanqr.databinding.FragmentScanBinding
import
com.base.scanqr.qr.QRImageAnalyzer
import
com.base.scanqr.qr.QRImageAnalyzer
import
com.base.scanqr.ui.contact.ContractCodeActivity
import
com.base.scanqr.ui.email.EmailCodeActivity
import
com.base.scanqr.ui.email.EmailCodeActivity
import
com.base.scanqr.ui.event.EventCodeActivity
import
com.base.scanqr.ui.event.EventCodeActivity
import
com.base.scanqr.ui.product.ProductCodeActivity
import
com.base.scanqr.ui.product.ProductCodeActivity
...
@@ -146,6 +149,24 @@ class ScanFragment : BaseFragment<FragmentScanBinding>(FragmentScanBinding::infl
...
@@ -146,6 +149,24 @@ class ScanFragment : BaseFragment<FragmentScanBinding>(FragmentScanBinding::infl
})
})
return
return
}
}
if
(
isContractQR
(
qrCodeValue
))
{
if
(
scanJump
.
get
())
return
scanJump
.
set
(
true
)
AdsMgr
.
showInsert
(
activity
,
false
,
object
:
AdsShowCallBack
()
{
override
fun
close
(
where
:
Int
)
{
jumpContractCodeActivity
(
activity
,
qrCodeValue
)
}
override
fun
failed
(
where
:
Int
)
{
jumpContractCodeActivity
(
activity
,
qrCodeValue
)
}
override
fun
googleFailed
(
where
:
Int
)
{
jumpContractCodeActivity
(
activity
,
qrCodeValue
)
}
})
return
}
if
(
isTelephoneQR
(
qrCodeValue
))
{
if
(
isTelephoneQR
(
qrCodeValue
))
{
if
(
scanJump
.
get
())
return
if
(
scanJump
.
get
())
return
scanJump
.
set
(
true
)
scanJump
.
set
(
true
)
...
@@ -263,6 +284,15 @@ class ScanFragment : BaseFragment<FragmentScanBinding>(FragmentScanBinding::infl
...
@@ -263,6 +284,15 @@ class ScanFragment : BaseFragment<FragmentScanBinding>(FragmentScanBinding::infl
}
}
}
}
private
fun
jumpContractCodeActivity
(
activity
:
MainActivity
,
qrCodeValue
:
String
)
{
activity
.
startActivity
(
Intent
(
activity
,
ContractCodeActivity
::
class
.
java
).
apply
{
val
bean
=
createContractBean
(
qrCodeValue
)
bean
.
needCreate
=
true
bean
.
createType
=
CREATE_TYPE_SCAN
putExtra
(
"data"
,
Gson
().
toJson
(
bean
))
})
}
private
fun
jumpTelephoneCodeActivity
(
activity
:
MainActivity
,
qrCodeValue
:
String
)
{
private
fun
jumpTelephoneCodeActivity
(
activity
:
MainActivity
,
qrCodeValue
:
String
)
{
activity
.
startActivity
(
Intent
(
activity
,
TelephoneCodeActivity
::
class
.
java
).
apply
{
activity
.
startActivity
(
Intent
(
activity
,
TelephoneCodeActivity
::
class
.
java
).
apply
{
val
bean
=
createTelephoneBean
(
qrCodeValue
)
val
bean
=
createTelephoneBean
(
qrCodeValue
)
...
...
app/src/main/java/com/base/scanqr/ui/start/StartActivity.kt
View file @
c41c9a24
...
@@ -45,10 +45,10 @@ class StartActivity : BaseActivity<ActivityStartBinding>(ActivityStartBinding::i
...
@@ -45,10 +45,10 @@ class StartActivity : BaseActivity<ActivityStartBinding>(ActivityStartBinding::i
override
fun
initView
()
{
override
fun
initView
()
{
super
.
initView
()
super
.
initView
()
//
startActivity
(
Intent
(
this
,
ContractActivity
::
class
.
java
))
//
startActivity(Intent(this, ContractActivity::class.java))
finish
()
//
finish()
return
//
return
NotificationHoverUtils
.
stopNotificationHandler
()
NotificationHoverUtils
.
stopNotificationHandler
()
...
...
app/src/main/java/com/base/scanqr/utils/IntentUtils.kt
View file @
c41c9a24
package
com.base.scanqr.utils
package
com.base.scanqr.utils
import
android.content.ContentValues
import
android.content.Context
import
android.content.Context
import
android.content.Intent
import
android.content.Intent
import
android.net.Uri
import
android.net.Uri
...
@@ -8,6 +9,7 @@ import android.provider.CalendarContract
...
@@ -8,6 +9,7 @@ import android.provider.CalendarContract
import
android.provider.ContactsContract
import
android.provider.ContactsContract
import
android.provider.Settings
import
android.provider.Settings
import
androidx.core.content.FileProvider
import
androidx.core.content.FileProvider
import
com.base.scanqr.bean.ContractUIBean
import
com.base.scanqr.bean.EmailUIBean
import
com.base.scanqr.bean.EmailUIBean
import
com.base.scanqr.bean.EventUIBean
import
com.base.scanqr.bean.EventUIBean
import
java.io.File
import
java.io.File
...
@@ -128,4 +130,27 @@ object IntentUtils {
...
@@ -128,4 +130,27 @@ object IntentUtils {
val
shareIntent
=
Intent
.
createChooser
(
callIntent
,
null
)
val
shareIntent
=
Intent
.
createChooser
(
callIntent
,
null
)
return
shareIntent
return
shareIntent
}
}
fun
intentWriteContract
(
bean
:
ContractUIBean
):
Intent
{
val
intent
=
Intent
(
Intent
.
ACTION_INSERT
,
ContactsContract
.
Contacts
.
CONTENT_URI
)
intent
.
putExtra
(
ContactsContract
.
Intents
.
Insert
.
NAME
,
bean
.
n
)
intent
.
putExtra
(
ContactsContract
.
Intents
.
Insert
.
PHONE
,
bean
.
tel
)
intent
.
putExtra
(
ContactsContract
.
Intents
.
Insert
.
EMAIL
,
bean
.
email
)
//竞品拿个公司地址,受不了
intent
.
putExtra
(
ContactsContract
.
Intents
.
Insert
.
COMPANY
,
bean
.
adr
)
// val values = ContentValues().apply {
// put(
// ContactsContract.CommonDataKinds.StructuredPostal.TYPE,
// ContactsContract.CommonDataKinds.StructuredPostal.TYPE_OTHER
// )
// put(ContactsContract.CommonDataKinds.StructuredPostal.FORMATTED_ADDRESS, bean.adr)
// }
// val dataArrayList = ArrayList<ContentValues>()
// dataArrayList.add(values)
//
// intent.putParcelableArrayListExtra(ContactsContract.Intents.Insert.DATA,dataArrayList)
val
shareIntent
=
Intent
.
createChooser
(
intent
,
null
)
return
shareIntent
}
}
}
\ No newline at end of file
app/src/main/java/com/base/scanqr/utils/PermissionUtils.kt
View file @
c41c9a24
...
@@ -25,6 +25,10 @@ object PermissionUtils {
...
@@ -25,6 +25,10 @@ object PermissionUtils {
fun
Context
.
checkContactsReadPermission
():
Boolean
{
fun
Context
.
checkContactsReadPermission
():
Boolean
{
return
PackageManager
.
PERMISSION_GRANTED
==
ActivityCompat
.
checkSelfPermission
(
this
,
Manifest
.
permission
.
READ_CONTACTS
)
return
PackageManager
.
PERMISSION_GRANTED
==
ActivityCompat
.
checkSelfPermission
(
this
,
Manifest
.
permission
.
READ_CONTACTS
)
}
}
fun
Context
.
checkContactsWritePermission
():
Boolean
{
return
PackageManager
.
PERMISSION_GRANTED
==
ActivityCompat
.
checkSelfPermission
(
this
,
Manifest
.
permission
.
WRITE_CONTACTS
)
}
//endregion
//endregion
//region 相机
//region 相机
...
...
app/src/main/res/layout/activity_contract_code.xml
View file @
c41c9a24
This diff is collapsed.
Click to expand it.
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