实例介绍
【实例截图】
【核心代码】
package com.example.testsvsdklib; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import java.util.ArrayList; import java.util.HashMap; import topsec.sslvpn.svsdklib.SVSDKLib; public class TestSVSDKLib extends Activity implements OnClickListener { private static final String TAG = "TestSVSDKLib"; public static final int VPN_MSG_STATUS_UPDATE = 100; // public static final int QUERY_VPN_MSG_STATUS_UPDATE = 101; // private final String VPN_SERVER = ""; private final int VPN_PORT = 443; private final String VPN_USERNAME = ""; private final String VPN_PASSWORD = ""; private Dialog mShowingDialog; public Handler MsgHandler = new Handler() { // ��������message,�÷����ɸ����н��м̳�. @Override public void handleMessage(Message msg) { int msgID = msg.what; Bundle bundle = (Bundle) msg.obj; switch (msg.what) { case VPN_MSG_STATUS_UPDATE: // VPN�ⷢ����Ϣ���� { if (null != bundle) { String vpnStatus = bundle.getString("vpnstatus"); String vpnErr = bundle.getString("vpnerror"); if (vpnStatus.equalsIgnoreCase("6")) { // VPN��������ɹ� Log.i(TAG, "VPN����Ϣ֪ͨ��VPN��������ɹ�"); // http://127.0.0.1:30080/cctv2/Jhsoft.mobileapp/login/loginbyurl.html?userName=trx&pwd=111111 Toast.makeText(TestSVSDKLib.this, "VPN����Ϣ֪ͨ��VPN��������ɹ�", Toast.LENGTH_SHORT).show(); } if (vpnStatus.equalsIgnoreCase("200")) { Toast.makeText(TestSVSDKLib.this, "VPN����Ϣ֪ͨ��VPN�����ʱ", Toast.LENGTH_SHORT).show(); } if (!vpnErr.equalsIgnoreCase("0")) { if (vpnErr.equalsIgnoreCase("10")) { Log.i(TAG, "VPN����Ϣ֪ͨ��VPN��Ҫ���µ�½������ʾ�û�����ѡ���Ƿ��߳���һ���û���������ǿ���߳���һ���û�"); SVSDKLib vpnlib = SVSDKLib.getInstance(); vpnlib.reLoginVPN(); } else { // VPN����������� Toast.makeText(TestSVSDKLib.this, "VPN����Ϣ֪ͨ����ǰVPN����Ϊ��" vpnErr, Toast.LENGTH_SHORT).show(); } } } } break; case QUERY_VPN_MSG_STATUS_UPDATE: // ��ѯ�߳���Ϣ���� { if (null != bundle) { String vpnStatus = bundle.getString("vpnstatus"); String vpnErr = bundle.getString("vpnerror"); if (vpnStatus.equalsIgnoreCase("6")) { // VPN��������ɹ� Toast.makeText(TestSVSDKLib.this, "��ѯ�߳�֪ͨ��VPN��������ɹ�", Toast.LENGTH_SHORT).show(); } if (!vpnErr.equalsIgnoreCase("0")) { // VPN����������� Toast.makeText(TestSVSDKLib.this, "��ѯ�߳�֪ͨ����ǰVPN����Ϊ��" vpnErr, Toast.LENGTH_SHORT) .show(); } } } break; } super.handleMessage(msg); } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); findviewByid(); InitSVSDKLib(); } private void findviewByid() { Button btnStart = (Button) findViewById(R.id.BTN_START); Button btnStop = (Button) findViewById(R.id.BTN_STOP); Button btnConnectSvr = (Button) findViewById(R.id.BTN_GETVPNSTATUS); btnStart.setOnClickListener(this); btnStop.setOnClickListener(this); btnConnectSvr.setOnClickListener(this); } // ��ʼ��VPN�� private void InitSVSDKLib() { SVSDKLib vpnlib = SVSDKLib.getInstance(); Context appContext = getApplicationContext(); vpnlib.setSVClientPath(appContext.getFilesDir().getPath()); vpnlib.setAppam(this.getAssets()); vpnlib.setMsgHandler(MsgHandler); vpnlib.setVPNMsgID(VPN_MSG_STATUS_UPDATE); vpnlib.setVPNInfo(VPN_SERVER, VPN_PORT, VPN_USERNAME, VPN_PASSWORD); vpnlib.prepareVPNSettings(); Log.i(TAG, "InitSVSDKLib done"); } @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.BTN_START: { doStart(); break; } case R.id.BTN_STOP: { doStop(); break; } case R.id.BTN_GETVPNSTATUS: { doGetVPNStatus(); break; } } } private void showErrorDialog(String sErrInfo) { mShowingDialog = new AlertDialog.Builder(this).setTitle("����") .setIcon(android.R.drawable.ic_dialog_alert) .setMessage(sErrInfo) .setPositiveButton("ȷ��", new DialogInterface.OnClickListener() { public void onClick(DialogInterface arg0, int arg1) { return; } }).create(); mShowingDialog.show(); return; } // ����VPN���� private void doStart() { SVSDKLib vpnlib = SVSDKLib.getInstance(); EditText edtIP = (EditText) findViewById(R.id.edtip); EditText edtPort = (EditText) findViewById(R.id.edtport); EditText edtUname = (EditText) findViewById(R.id.edtuname); EditText edtUpwd = (EditText) findViewById(R.id.edtupwd); String sIP, sUname, sUpwd; int port; sIP = edtIP.getText().toString(); sUname = edtUname.getText().toString(); sUpwd = edtUpwd.getText().toString(); if (sIP == null || sIP.length() == 0) { showErrorDialog("VPN ip不能为空"); return; } try { port = Integer.parseInt(edtPort.getText().toString()); } catch (NumberFormatException e) { showErrorDialog("VPN�˿���Ч��Χ��1-65535"); return; } if ((port <= 0) || (port > 65535)) { showErrorDialog("VPN 端口不能为空"); return; } if (sUname == null || sUname.length() == 0) { showErrorDialog("帐号不能为空"); return; } if (sUpwd == null || sUpwd.length() == 0) { showErrorDialog("密码不能为空"); return; } // vpnlib.setVPNInfo("192.168.95.84", 443, "1", "111111"); vpnlib.setVPNInfo(sIP, port, sUname, sUpwd); Log.i("ttt", "ip= " sIP " port= " port " uname= " sUname); vpnlib.prepareVPNSettings(); vpnlib.stopVPN(); vpnlib.startVPN(); } // �ر�VPN���� private void doStop() { // ֹͣVPN���� SVSDKLib vpnlib = SVSDKLib.getInstance(); vpnlib.stopVPN(); } // ��ȡVPN״̬ private void doGetVPNStatus() { String sVPNStatus; SVSDKLib vpnlib = SVSDKLib.getInstance(); sVPNStatus = vpnlib.getVPNStatus(); Toast.makeText(TestSVSDKLib.this, "vpn状态:" sVPNStatus, Toast.LENGTH_SHORT).show(); ArrayList<HashMap<String, String>> reslist = vpnlib.getResList(); } // VPN״̬��ѯ�߳� // private class GetVPNStatusThread extends Thread { // // @Override // public void run() { // String sVPNStatus; // String sVPNErr; // SVSDKLib vpnlib = SVSDKLib.getInstance(); // // int nTimeOut = 10; // ��ʱʱ�䣬10�� // int nTimeStep = 0; // // try { // while (nTimeStep < nTimeOut) { // sVPNStatus = vpnlib.getVPNStatus(); // sVPNErr = vpnlib.getVPNError(); // if (sVPNStatus.equalsIgnoreCase("6")) { // // ֪ͨ������VPN���ӳɹ� // Message msg = Message.obtain(MsgHandler); // msg.what = QUERY_VPN_MSG_STATUS_UPDATE; // // sVPNStatus = "6"; // // Bundle bundle = new Bundle(); // bundle.putString("vpnerror", sVPNErr); // bundle.putString("vpnstatus", sVPNStatus); // // msg.obj = bundle; // msg.sendToTarget(); // break; // } // // if (!sVPNErr.equalsIgnoreCase("0")) { // // ֪ͨ������VPN���ӳ����� // Message msg = Message.obtain(MsgHandler); // msg.what = QUERY_VPN_MSG_STATUS_UPDATE; // // Bundle bundle = new Bundle(); // bundle.putString("vpnerror", sVPNErr); // bundle.putString("vpnstatus", sVPNStatus); // // // // msg.sendToTarget(); // msg.obj = bundle; // break; // } // // } // Thread.sleep(1000); // nTimeStep ; // // } catch (InterruptedException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // return; // } // } }
标签: VPN
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论