2013-11-10 8 views
2

Я пытаюсь создать WifiConfiguration для Android. Все остальные свойства могут быть установлены. Но если я пытаюсь установить SSID или BSSID, я получаю ошибку сегментации (11), и приложение и Delphi просто зависает.Создать WifiConfiguration с Delphi XE5 для Android

var 
    WIFIConfig: JWifiConfiguration; 
begin 
    WIFIConfig := TJWifiConfiguration.JavaClass.init; 
    WIFIConfig.hiddenSSID := false;       -> works 
    WIFIConfig.SSID := StringtoJString('"YOUR_WLAN_SSID"'); -> App just hangs 
end; 

http://developer.android.com/reference/android/net/wifi/WifiConfiguration.html

JWifiConfigurationClass = interface(JObjectClass) 
    ['{F69F53BC-BC63-436A-8DA9-57389B30CAA8}'] 
    function init: JWifiConfiguration; cdecl; overload; 

    end; 

    [JavaSignature('android/net/wifi/WifiConfiguration')] 
    JWifiConfiguration = interface(JObject) 
    ['{382E85F2-6BF8-4255-BA3C-03C696BC6451}'] 
    function _GetSSID: JString; 
    procedure _SetSSID(Value: JString); 
    function _GetBSSID: JString; 
    procedure _SetBSSID(Value: JString); 
    function _GethiddenSSID: boolean; 
    procedure _SethiddenSSID(Value: boolean); 
    function _GetallowedAuthAlgorithms: JBitSet; 
    procedure _SetallowedAuthAlgorithms(Value: JBitSet); 
    function _GetallowedGroupCiphers: JBitSet; 
    procedure _SetallowedGroupCiphers(Value: JBitSet); 
    function _GetallowedKeyManagement: JBitSet; 
    procedure _SetallowedKeyManagement(Value: JBitSet); 
    function _GetallowedPairwiseCiphers: JBitSet; 
    procedure _SetallowedPairwiseCiphers(Value: JBitSet); 
    function _GetallowedProtocols: JBitSet; 
    procedure _SetallowedProtocols(Value: JBitSet); 
    function _GetnetworkId: integer; 
    procedure _SetnetworkId(Value: integer); 
    function _GetpreSharedKey: JString; 
    procedure _SetpreSharedKey(Value: JString); 
    function _Getstatus: integer; 
    procedure _Setstatus(Value: integer); 
    function _GetwepTxKeyIndex: integer; 
    procedure _SetwepTxKeyIndex(Value: integer); 
    function _GetwepKeys: TJavaObjectArray<JString>; 
    procedure _SetwepKeys(Value: TJavaObjectArray<JString>); 

    property SSID: JString read _GetSSID write _SetSSID; 
    property BSSID: JString read _GetBSSID write _SetBSSID; 
    property allowedAuthAlgorithms: JBitSet read _GetallowedAuthAlgorithms write _SetallowedAuthAlgorithms; 
    property allowedGroupCiphers: JBitSet read _GetallowedGroupCiphers write _SetallowedGroupCiphers; 
    property allowedKeyManagement: JBitSet read _GetallowedKeyManagement write _SetallowedKeyManagement; 
    property allowedPairwiseCiphers: JBitSet read _GetallowedPairwiseCiphers write _SetallowedPairwiseCiphers; 
    property allowedProtocols: JBitSet read _GetallowedProtocols write _SetallowedProtocols; 
    property hiddenSSID: boolean read _GethiddenSSID write _SethiddenSSID; 
    property networkId: integer read _GetnetworkId write _SetnetworkId; 
    property preSharedKey: JString read _GetpreSharedKey write _SetpreSharedKey; 
    property priority: integer read _GetnetworkId write _SetnetworkId; 
    property status: integer read _Getstatus write _Setstatus; 
    property wepKeys: TJavaObjectArray<JString> read _GetwepKeys write _SetwepKeys; 
    property wepTxKeyIndex: integer read _GetwepTxKeyIndex write _SetwepTxKeyIndex; 

    end; 

    TJWifiConfiguration = class(TJavaGenericImport<JWifiConfigurationClass, 
    JWifiConfiguration>) 
    end; 

ответ

0

Вы упускаете cdecl соглашение о вызовах на все ваши JWifiConfiguration методов.

[JavaSignature('android/net/wifi/WifiConfiguration')] 
JWifiConfiguration = interface(JObject) 
    ['{382E85F2-6BF8-4255-BA3C-03C696BC6451}'] 
    function _GetSSID: JString; cdecl; 
    procedure _SetSSID(Value: JString); cdecl; 
    function _GetBSSID: JString; cdecl; 
    procedure _SetBSSID(Value: JString); cdecl; 
    function _GethiddenSSID: boolean; cdecl; 
    procedure _SethiddenSSID(Value: boolean); cdecl; 
    function _GetallowedAuthAlgorithms: JBitSet; cdecl; 
    procedure _SetallowedAuthAlgorithms(Value: JBitSet); cdecl; 
    function _GetallowedGroupCiphers: JBitSet; cdecl; 
    procedure _SetallowedGroupCiphers(Value: JBitSet); cdecl; 
    function _GetallowedKeyManagement: JBitSet; cdecl; 
    procedure _SetallowedKeyManagement(Value: JBitSet); cdecl; 
    function _GetallowedPairwiseCiphers: JBitSet; cdecl; 
    procedure _SetallowedPairwiseCiphers(Value: JBitSet); cdecl; 
    function _GetallowedProtocols: JBitSet; cdecl; 
    procedure _SetallowedProtocols(Value: JBitSet); cdecl; 
    function _GetnetworkId: integer; cdecl; 
    procedure _SetnetworkId(Value: integer); cdecl; 
    function _GetpreSharedKey: JString; cdecl; 
    procedure _SetpreSharedKey(Value: JString); cdecl; 
    function _Getstatus: integer; cdecl; 
    procedure _Setstatus(Value: integer); cdecl; 
    function _GetwepTxKeyIndex: integer; cdecl; 
    procedure _SetwepTxKeyIndex(Value: integer); cdecl; 
    function _GetwepKeys: TJavaObjectArray<JString>; cdecl; 
    procedure _SetwepKeys(Value: TJavaObjectArray<JString>); cdecl; 

    property SSID: JString read _GetSSID write _SetSSID; 
    property BSSID: JString read _GetBSSID write _SetBSSID; 
    property allowedAuthAlgorithms: JBitSet read _GetallowedAuthAlgorithms write _SetallowedAuthAlgorithms; 
    property allowedGroupCiphers: JBitSet read _GetallowedGroupCiphers write _SetallowedGroupCiphers; 
    property allowedKeyManagement: JBitSet read _GetallowedKeyManagement write _SetallowedKeyManagement; 
    property allowedPairwiseCiphers: JBitSet read _GetallowedPairwiseCiphers write _SetallowedPairwiseCiphers; 
    property allowedProtocols: JBitSet read _GetallowedProtocols write _SetallowedProtocols; 
    property hiddenSSID: boolean read _GethiddenSSID write _SethiddenSSID; 
    property networkId: integer read _GetnetworkId write _SetnetworkId; 
    property preSharedKey: JString read _GetpreSharedKey write _SetpreSharedKey; 
    property priority: integer read _GetnetworkId write _SetnetworkId; 
    property status: integer read _Getstatus write _Setstatus; 
    property wepKeys: TJavaObjectArray<JString> read _GetwepKeys write _SetwepKeys; 
    property wepTxKeyIndex: integer read _GetwepTxKeyIndex write _SetwepTxKeyIndex; 
end; 
+0

Пробовал ваше решение, но призывы cdecl не имеют значения. Как я уже сказал, единственными свойствами, которые я не могу установить, являются SSID и BSSID, все остальные работают. – user2976209

+0

Что вам скажет logcat? Есть ли сообщения об ошибках? –

+0

Logcat ничего мне не говорит, никаких сообщений об ошибках. – user2976209