源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Android中实现地址栏输入网址能浏览该地址网页源码并操作访问网络

  • 时间:2021-04-20 11:39 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Android中实现地址栏输入网址能浏览该地址网页源码并操作访问网络
[img]http://files.jb51.net/file_images/article/201306/2013061415181511.gif?2013514151834[/img]   首先实现简单布局:
[u]复制代码[/u] 代码如下:
<EditText android:id="@+id/et_url" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:ems="10" android:text="@string/url_text" > <requestFocus android:layout_width="match_parent" /> </EditText> <Button android:id="@+id/btn_ie" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@+id/et_url" android:onClick="sendHttp" android:text="@string/btn_text" /> <ScrollView android:id="@+id/sv_id" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/btn_ie" > <TextView android:id="@+id/tv_ie" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="@string/ie_text" /> </ScrollView>
在Stirng中
[u]复制代码[/u] 代码如下:
<string name="url_text">http://luochuang.iteye.com/blog/1606231</string> <string name="btn_text">浏览</string> <string name="ie_text">显示浏览网页内容</string>
新建类文件 : [img]http://files.jb51.net/file_images/article/201306/2013061415193512.gif?2013514151949[/img]   首先MainActivity 中代码 :
[u]复制代码[/u] 代码如下:
public class MainActivity extends Activity { // 声明控件 public EditText et_url; public TextView tv_ie; // 网路操作类 public NetWorkUtils netWorkUtils; private Handler handler; public String content; public static final int TEXT = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 获取et_url对象 et_url = (EditText) findViewById(R.id.et_url); tv_ie = (TextView) findViewById(R.id.tv_ie); // 实例化 netWorkUtils = new NetWorkUtils(this); // 实例化这个处理者 handler = new Handler() { public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case TEXT: tv_ie.setText(content);// 设置显示的文本 break; default: break; } } }; } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } public void sendHttp(View v) { // 设置网络 boolean flag = netWorkUtils.setActiveNetWork(); if (flag) { // run方法 执行完毕 这个线程就消耗了 // 子线程 new Thread(new Runnable() { @Override public void run() { send(); handler.sendEmptyMessage(TEXT); } }).start(); } } // 发送请求操作 @SuppressLint("NewApi") public void send() { // 获取url的path路径 String path = et_url.getText().toString(); if (path.isEmpty()) { Toast.makeText(MainActivity.this, "访问 的url地址不能为空", Toast.LENGTH_LONG).show(); } else { content = HttpUtils.sendGet(path); } /*// 设置网络 netWorkUtils.setActiveNetWork(); // 获取url的path路径 String path = et_url.getText().toString(); if (path.isEmpty()) { Toast.makeText(MainActivity.this, "访问 的url地址不能为空", Toast.LENGTH_LONG).show(); } else { try { // 设置访问的url URL url = new URL(path); // 打开请求 HttpURLConnection httpURLConnection = (HttpURLConnection) url .openConnection(); // 设置请求的信息 httpURLConnection.setRequestMethod("GET"); // 判断服务器是否响应成功 if (httpURLConnection.getResponseCode() == 200) { // 获取响应的输入流对象 InputStream is = httpURLConnection.getInputStream(); // 字节输出流 ByteArrayOutputStream bops = new ByteArrayOutputStream(); // 读取数据的缓存区 byte buffer[] = new byte[1024]; // 读取长度记录 int len = 0; // 循环读取 while ((len = is.read(buffer)) != -1) { bops.write(buffer, 0, len); } // 把读取的内容转换成byte数组 byte data[] = bops.toByteArray(); // 把转换成字符串 content = new String(data); } else { Toast.makeText(MainActivity.this, "服务器响应错误", Toast.LENGTH_LONG).show(); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }*/ } }
[u]复制代码[/u] 代码如下:
public class HttpUtils { public static String sendGet(String path) { String content = null; try { // 设置访问url URL url = new URL(path); // 打开请求 HttpURLConnection httpURLConnection = (HttpURLConnection) url .openConnection(); // 设置请求的信息 httpURLConnection.setRequestMethod("GET"); // 设置请求是否超时时间 httpURLConnection.setConnectTimeout(5000); // 判断服务器是否响应成功 if (httpURLConnection.getResponseCode() == 200) { // 获取响应的输入流对象 InputStream is = httpURLConnection.getInputStream(); byte data[] = StreamTools.isToData(is); // 把转换成字符串 content = new String(data); // 内容编码方式 if (content.contains("gb2312")) { content = new String(data, "gb2312"); } } // 断开连接 httpURLConnection.disconnect(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return content; } }
[u]复制代码[/u] 代码如下:
public class StreamTools { public static byte[] isToData(InputStream is) throws IOException{ //字节输出流 ByteArrayOutputStream bops = new ByteArrayOutputStream(); //读取数据的缓存区 byte buffer[] = new byte[1024]; //读取长度 的记录 int len = 0; //循环读取 while((len = is.read(buffer)) != -1){ bops.write(buffer, 0, len); } //把读取的内容转换成 byte数组 byte data[] = bops.toByteArray(); return data; } }
[u]复制代码[/u] 代码如下:
public class NetWorkUtils { private Context context; // 网路链接管理对象 public ConnectivityManager connectivityManager; public NetWorkUtils(Context context) { this.context = context; // 获取网络链接的对象 connectivityManager = (ConnectivityManager) context .getSystemService(Context.CONNECTIVITY_SERVICE); } //public void setActiveNetWork() { public boolean setActiveNetWork() { boolean flag = false; // 获取可用的网络链接对象 NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo(); if (networkInfo == null) { new AlertDialog.Builder(context) .setTitle("网络不可用") .setMessage("可以设置网络?") .setPositiveButton("确认", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(context, "点击确认", Toast.LENGTH_LONG).show(); // 声明意图 Intent intent = new Intent(); intent.setAction(Intent.ACTION_MAIN); intent.addCategory("android.intent.category.LAUNCHER"); intent.setComponent(new ComponentName( "com.android.settings", "com.android.settings.Settings")); intent.setFlags(0x10200000); // 执行意图 context.startActivity(intent); } }) .setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } // 必须.show(); }).show(); } //判断网络是否可用 if(networkInfo!=null){ flag=true; } return flag; } }
然后就是要在AndroidManifest.xml中添加 可以访问网络的权限
[u]复制代码[/u] 代码如下:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.INTERNET"/>
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部