Italian usb permission chiede sempre ad ogni riavvio

fifiddu70

Well-Known Member
Licensed User
Longtime User
Ciao a tutti, ho un codice di esempio che utilizzo per la stampa su stampanti termiche tramite cavo usb, funziona tutto bene fino a quando non riavvio il tablet, appena viene riavviato mi chiede dinuovo i permessi di usb, io vorrei che non mi chiedesse più i permessi usb essendo che deve funzionare in autotomatico e non mi deve sempre chiedere questi permessi per utilizzare l'usb.
questo il codice che uso e che funziona tranne per questo problema che mi chiede sempre i permessi ad ogni riavvio.
B4X:
#Region  Project Attributes
    #ApplicationLabel: USB Serial Example
    #VersionCode: 1
    #VersionName:
    #SupportedOrientations: unspecified
    #CanInstallToExternalStorage: false
    #BridgeLogger:True
#End Region

#Region  Activity Attributes
    #FullScreen: False
    #IncludeTitle: True
#End Region

Sub Process_Globals
    ' Demo has been changed to support Ver_2.4 JeanLC
    Dim usb1 As UsbSerial   
    Dim usb2 As UsbSerial   
    Dim astreams1 As AsyncStreams
    Dim astreams2 As AsyncStreams
    Dim connected As Boolean
End Sub

Sub Globals

    Dim btnSend, btnOpen, btnClose As Button
    Private btnOpen2 As Button
    Private btnClose2 As Button
    Private btnSend2 As Button
    Private txtreport As EditText
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("1")
    btnClose.Enabled = False
    btnSend.Enabled = False
    
    btnClose2.Enabled = False
    btnSend2.Enabled = False
End Sub

Sub btnOpen_Click
    If usb1.UsbPresent(1) = usb1.USB_NONE Then    ' Ver_2.4
        Msgbox("No device USB NONE","")
        Return
    End If
    If (usb1.HasPermission(1)) Then    ' Ver_2.4
        Log(usb1.DeviceInfo(1))
        'This is very important - ( VendorId, ProductId )
        usb1.SetCustomDevice(usb1.DRIVER_SILABS, 0x456, 0x808)

        Dim dev As Int
        dev = usb1.Open(19200, 1) 'STMicroeletronics
        If dev <> usb1.USB_NONE Then
            Log("Connected successfully! 1")
            btnOpen.Enabled = False
            btnClose.Enabled = True
            btnSend.Enabled = True
            
        
            Log("CONNECTED SUCCESSFULLY!!!")
            connected = True
            astreams1.Initialize(usb1.GetInputStream, usb1.GetOutputStream, "astreams1")

            'This is important
            usb1.SetParameters(19200, usb1.DATABITS_8,usb1.STOPBITS_1, usb1.PARITY_EVEN)
            
            'Here if you want codce that call print
        Else
            Log("Error opening USB port 1")
        End If
    Else
        usb1.RequestPermission(1)  ' Ver_2.4
    End If

End Sub
Sub stampafattura
    
    txtreport.Text= "SUCA !!"
    If connected  Then
        
        If astreams1.IsInitialized = False Then Return
        
        Dim SendMsg As String
        Dim buffer() As Byte
        buffer =  txtreport.Text.GetBytes("UTF8")
        SendMsg = Chr(27) & "!" &Chr(8+16+64) & "" & CRLF
        astreams1.Write(SendMsg.GetBytes("UTF8"))
        astreams1.Write(buffer)
        txtreport.SelectAll
        
        
        
    Else
        
        Msgbox("Attenzione connetti la stampante","STAMPANTE NON CONNESSA")
        
    End If

 
End Sub
Sub btnOpen2_Click
    If usb2.UsbPresent(2) = usb2.USB_NONE Then    ' Ver_2.4
        Log("Msgbox - no device")
        Msgbox("No USB device or accessory detected!", "Error")
        Log("Msgbox - returned")
        Return
    End If
    Log("Checking permission 2")
    If (usb2.HasPermission(2)) Then    ' Ver_2.4
        Msgbox(usb2.DeviceInfo(2), "Device Information 2")    ' Ver_2.4
        Dim dev As Int
        'dev = usb.Open(115200, 2)        ' Ver_2.4
        dev = usb2.Open(9600, 2)        ' Ver_2.4
        If dev <> usb2.USB_NONE Then
            Log("Connected successfully! 2")
            btnOpen2.Enabled = False
            btnClose2.Enabled = True
            btnSend2.Enabled = True           
            astreams2.Initialize(usb2.GetInputStream, usb2.GetOutputStream, "astreams2")
        Else
            Log("Error opening USB port 2")
        End If
    Else
        usb2.RequestPermission(2)  ' Ver_2.4
    End If
End Sub

Sub astreams1_NewData (Buffer() As Byte)
    ' You must check for DeviceInfo or analyze Buffer data to know what is connected to the USB
    ' The order of the USB could change as you plug them and could change when changing the hub port they are connected to
    Log("NewData 1")
    Log(BytesToString(Buffer, 0, Buffer.Length, "UTF8"))
End Sub

Sub Astreams2_NewData (Buffer() As Byte)
    ' You must check for DeviceInfo or analyze Buffer data to know what is connected to the USB
    ' The order of the USB could change as you plug them and could change when changing the hub port they are connected to
    Log("NewData 2")
    Log(BytesToString(Buffer, 0, Buffer.Length, "UTF8"))
End Sub

Sub btnClose_Click
    astreams1.Close
    usb1.Close   
    btnOpen.Enabled = True
    btnClose.Enabled = False
    btnSend.Enabled = False
End Sub

Sub btnClose2_Click
    astreams2.Close
    usb2.Close
    btnOpen2.Enabled = True
    btnClose2.Enabled = False
    btnSend2.Enabled = False   
End Sub

Sub btnSend_Click
    stampafattura
End Sub

Sub btnSend2_Click
    astreams2.Write("abcde".GetBytes("UTF8"))
End Sub

Sub btnExit_Click
    ExitApplication
End Sub

Sub aStreams1_Error
    Log("Error: " & LastException)
    astreams1.Close
End Sub
Sub astreams1_Terminated
    Log("Terminated")
    astreams1.Close
End Sub

Sub AStreams2_Error
    Log("Error: " & LastException)
    astreams2.Close
End Sub
Sub Astreams2_Terminated
    Log("Terminated")
    astreams2.Close
End Sub


Sub Activity_Resume

End Sub

Sub Activity_Pause (UserClosed As Boolean)

End Sub
 

MarcoRome

Expert
Licensed User
Longtime User
Ogni volta che colleghi la porta USB dovrebbe uscire una finestra del genere:

upload_2018-7-20_15-22-25.png


Se inserisci il check e dai l'ok non dovrebbe più chiederlo. Differentemente ad ogni collegamento lo chiederà
 

fifiddu70

Well-Known Member
Licensed User
Longtime User
si, io inserisco il ceck, ma me lo chiede sempre, ho fatto come deescritto da erel ma nulla, mi chiede sempre l'autorizzazione ma questo solo ad ogni riavvio del tablet, se non viene riavviato questo non succede.
 

fifiddu70

Well-Known Member
Licensed User
Longtime User
il manifest editor è tutto ok, ho aggiunto in basso la dicitura del file e ho copiato il file device_filter.xml nel percorso: UsbSerial\Objects\res
 

fifiddu70

Well-Known Member
Licensed User
Longtime User
questo quello che ho incollato sul manifest editor:
B4X:
AddActivityText(main, <intent-filter>
    <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>
    <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
        android:resource="@xml/device_filter" />)
 

MarcoRome

Expert
Licensed User
Longtime User
Hai aggiunto anche questo nel manifest:

B4X:
CreateResource(xml, device_filter.xml,
<resources>
<usb-device vendor-id="456" product-id="808" />
</resources>
)
 

MarcoRome

Expert
Licensed User
Longtime User
Questo ti permette di creare in runtime il file device_filter.xml. Quindi cancella quello che hai e inserisci oltre a quanto già esistente nel manifest le istruzioni sopra riportate.
 

fifiddu70

Well-Known Member
Licensed User
Longtime User
Hai aggiunto anche questo nel manifest:

B4X:
CreateResource(xml, device_filter.xml,
<resources>
<usb-device vendor-id="456" product-id="808" />
</resources>
)

lo devo aggiungere nel manifest editor o dentro il file device_filter?
questo passaggio da te descritto non lo visto in effetti e nemmeno lo aggiunto.
 

MarcoRome

Expert
Licensed User
Longtime User
lo devo aggiungere nel manifest editor o dentro il file device_filter?
questo passaggio da te descritto non lo visto in effetti e nemmeno lo aggiunto.

Questo ti permette di creare in runtime il file device_filter.xml. Quindi cancella il file xml nella directory e inserisci oltre a quanto già esistente nel manifest le istruzioni sopra riportate.
 

fifiddu70

Well-Known Member
Licensed User
Longtime User
MarcoRome lo copiato dentro il manifest editor, ma ho sempre lo stesso problema.
 

fifiddu70

Well-Known Member
Licensed User
Longtime User
ho eliminato il file device_filter precedente, ho visto che in esecuzione si è creato il file con il vid e pid giusto ma mi chiede sempre questa impostazione di anche se flaggo su impostazione di default, il problema è sempre nel riavvio del tablet, ho provato su uno smartphone stesso problema, perchè?
 

fifiddu70

Well-Known Member
Licensed User
Longtime User
questo è tutto il manifest editor:
B4X:
'This code will be applied to the manifest file during compilation.
'You do not need to modify it in most cases.
'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136
AddManifestText(
<uses-sdk android:minSdkVersion="5" android:targetSdkVersion="27"/>
<supports-screens android:largeScreens="true"
    android:normalScreens="true"
    android:smallScreens="true"
    android:anyDensity="true"/>)
    AddPermission (android.permission.ACCESS_COARSE_LOCATION)
    AddPermission(android.permission.BLUETOOTH)
SetApplicationAttribute(android:icon, "@drawable/icon")
SetApplicationAttribute(android:label, "$LABEL$")
'End of default text.
AddActivityText(main, <intent-filter>
        <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
    </intent-filter>
    <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
        android:resource="@xml/device_filter" />)
CreateResource(xml, device_filter.xml,
<resources>
<usb-device vendor-id="456" product-id="808" />
</resources>
)
 

fifiddu70

Well-Known Member
Licensed User
Longtime User
confrontandolo con il file device_filter.xml che si trova sul progetto dempo della libreria ci sono molte differenze, ad esempio il file device_filter è così composto:
B4X:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!-- 0x0403 / 0x6001: FTDI FT232R UART -->
    <usb-device vendor-id="1027" product-id="24577" />

    <!-- 0x2341 / Arduino -->
    <usb-device vendor-id="9025" />

    <!-- 0x16C0 / 0x0483: Teensyduino  -->
    <usb-device vendor-id="5824" product-id="1155" />
    
    <!-- 0x067b / 0x2303 Prolific PL2303 -->
    <usb-device vendor-id="1659" product-id="8963"/>

    <!-- 0x03eb / Atmel -->
    <usb-device vendor-id="1003" />
    
    <!-- 0x10c4 / 0xea60 Silicon Labs CP1202 -->
    <usb-device vendor-id="4292" product-id="60000"/>

</resources>

mentre il file device_filter.xml che si crea dal manifesta editor è il seguente:
B4X:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<usb-device vendor-id="456" product-id="808" />
</resources>

come vedi gli altri hanno altri daticome il nome del produttore etc, forse magari questo porta a non tenere in mente le impostazioni di default della usb?.
 

fifiddu70

Well-Known Member
Licensed User
Longtime User
Risolto il problema, il codice nel manifest editor non è funzionante
B4X:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<usb-device vendor-id="456" product-id="808" />
</resources>
lo sostituito con un'altro, adesso funziona perfettamente.
 

Mike1970

Well-Known Member
Licensed User
Longtime User
Buonasera, potresti per favore indicare esattamente cosa hai scritto nel Manifest e cosa nel file device_filter.xml?
Inoltre, come hai fatto ad includere il file device_filter ed in quale cartella?
Ho lo stesso problema con Android7.
Grazie per una risposta.
 
Top