[บทเรียน, B4A] สาธิตการกำหนด Permissions ในไฟล์manifestและการเขียนโค้ดPermissions ในขณะที่runtime

Theera

Expert
Licensed User
Longtime User
ขอขอบคุณความรู้ดีๆของErel, ilanและAeric

สาธิตตัวอย่างการเขียนโค้ดในไฟล์ manifest

B4X:
AddPermission(android.permission.ACCESS_FINE_LOCATION)
AddPermission(android.permission.BLUETOOTH_SCAN)
AddPermission(android.permission.BLUETOOTH_CONNECT)

หมายเหตุ
เราใช้คำสั่งAddPermission() และRemovePermission()ในการอนุญาต/ยกเลิกการอนุญาต ในการเขียนโค้ดในไฟล์manifest

อีกวิธีหนึ่ง เราสามารถเขียนโค้ดอนุญาตในขณะแอพกำลังถูกเรียกใช้งาน

B4X:
'การเขียนโค้ด กำหนดอนุญาต ขณะruntime
Dim Permissions As List
Dim rp  As RuntimePermissions
Dim phone As Phone
If phone.SdkVersion >= 31 Then
    Permissions = Array("android.permission.BLUETOOTH_SCAN", "android.permission.BLUETOOTH_CONNECT", rp.PERMISSION_ACCESS_FINE_LOCATION)
Else
    Permissions = Array(rp.PERMISSION_ACCESS_FINE_LOCATION)
End If
For Each per As String In Permissions
    rp.CheckAndRequest(per)
    Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
    If Result = False Then
        ToastMessageShow("No permission: " & Permission, True)
        Return
    End If
Next
หมายเหตุ
กรณีไม่ได้เป็นการเขียน Non-B4XPages ให้แก้ไขบรรทัด
B4X:
  'B4XPages
    Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
เขียนใหม่เป็น
B4X:
'Non-B4XPages
    Wait For Activity_PermissionResult (Permission As String, Result As Boolean)

ข้อควรจำ
เนื่องจากการอนุญาตเป็นเรื่องของB4Aเท่านั้น
ดังนั้น B4XPagesจึงไม่ใช่ CrossPlatforms
ขอขอบคุณ Aericชาวมาเลเซีย อีกครั้ง ณ ที่นี่
ศึกษาเพิ่มเติม



การขออนุญาตให้แอพสามารถทำงานบนแอพอื่น

 
Last edited:

aeric

Expert
Licensed User
Longtime User
Sorry to post in Thai forum.
I want to correct you that using B4XPages in B4A (Android) doesn't mean it is cross platform.
Your code example will confuse and mislead other developers.
I think you still don't understand what B4XPages is compare to Activity.

I suggest you make the following correction.

In Activity, usually when you start with Default project template without using B4XPages
B4X:
' Activity
Wait For Activity_PermissionResult (Permission As String, Result As Boolean)

In B4XPages, usually when you start with B4XPages project template
B4X:
' B4XPages
Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)

Permission is only apply to Android / B4A.
This is not apply to B4J or B4i therefore it is not cross platform.

Google Translation (hopefully correct):
ขออภัยที่โพสต์ในฟอรัมภาษาไทย
ฉันต้องการแก้ไขให้คุณทราบว่าการใช้ B4XPages ใน B4A (Android) ไม่ได้หมายความว่าเป็นแพลตฟอร์มข้ามแพลตฟอร์ม
ตัวอย่างโค้ดของคุณจะทำให้ผู้พัฒนาคนอื่นสับสนและเข้าใจผิด
ฉันคิดว่าคุณยังคงไม่เข้าใจว่า B4XPages เปรียบเทียบกับ Activity อย่างไร

ฉันแนะนำให้คุณแก้ไขดังต่อไปนี้

ในกิจกรรม โดยปกติเมื่อคุณเริ่มต้นด้วยเทมเพลตโครงการ Default
B4X:
' Activity
Wait For Activity_PermissionResult (Permission As String, Result As Boolean)

ใน B4XPages โดยปกติเมื่อคุณเริ่มต้นด้วยเทมเพลตโครงการ B4XPages
B4X:
' B4XPages
Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)

สิทธิ์จะใช้ได้กับ Android / B4A เท่านั้น
สิ่งนี้ไม่เกี่ยวข้องกับ B4J หรือ B4i ดังนั้นจึงไม่รองรับหลายแพลตฟอร์ม
 

Theera

Expert
Licensed User
Longtime User
Many thanks, Aeric , I forgot it is used only manifest in Android
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…