-
Android中调用webservice
2013-04-06 20:17:33
调用 WebService 分以下几步:1、指定 WebService 的命名空间和调用方法;
2、设置调用方法的参数值,如果没有参数,可以省略,设置方法的参数值的代码如下:
rpc.addProperty("abc", "test");要注意的是,addProperty方法的第1个参数虽然表示调用方法的参数名,但该参数值并不一定与服务端的WebService类中的方法参数名一致,只要设置参数的顺序一致即可。
3、生成调用Webservice方法的SOAP请求信息。
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.bodyOut = rpc;
envelope.dotNet = false; //这里如果设置为TRUE,那么在服务器端将获取不到参数值(如:将这些数据插入到数据库中的话)
envelope.setOutputSoapObject(rpc);
创建SoapSerializationEnvelope对象时需要通过SoapSerializationEnvelope类的构造方法设置SOAP协议的版本号。
该版本号需要根据服务端WebService的版本号设置。
在创建SoapSerializationEnvelope对象后,不要忘了设置SOAPSoapSerializationEnvelope类的bodyOut属性, 该属性的值就是在第一步创建的SoapObject对象。4、创建HttpTransportsSE对象。
这里不要使用 AndroidHttpTransport ht = new AndroidHttpTransport(URL); 这是一个要过期的类
private static String URL = "http://www.webxml.com.cn/webservices/weatherwebservice.asmx";
HttpTransportSE ht = new HttpTransportSE(URL);
ht.debug = true;5、使用call方法调用WebService方法
private static String SOAP_ACTION = "http://WebXml.com.cn/getWeatherbyCityName";
ht.call(SOAP_ACTION, envelope);6、获得WebService方法的返回结果
有两种方法:
(1)、使用getResponse方法获得返回数据。
(2)、使用 bodyIn 及 getProperty。7、 这时候执行会出错,提示没有权限访问网络
需要修改 AndroidManifest.xml 文件,赋予相应权限
简单来说就是增加下面这行配置:<uses-permission android:name="android.permission.INTERNET"></uses-permission> -
Android 标题 居中 .
2013-03-16 21:29:06
1在onCreate()方法中加上这三句话:
- requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
- setContentView(R.layout.main);
- getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.title);
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(R.layout.main); getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,R.layout.title);
在布局文件中新建一个title.xml文件:- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="center">
- <TextView android:id="@+id/textTile"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="title" />
- </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"> <TextView android:id="@+id/textTile" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="title" /> </LinearLayout>
注:另外设置字体大小、颜色等在title文件的textTitle中设置
效果如下图: -
Android入门 — 模拟器的创建和运行
2013-03-15 16:34:14
我们创建了android的工程,接下来有一个问题了,我们该怎么运行创建的程序呢?所以我们需要一个android的模拟器。配置环境的时候我们安装了android的SDK,在eclipse->window下有一个AVD(Android Virtual Device) Manager,点击New…按钮新建一个模拟器,主要要填的有Name,Target,SD Card Size(建议1GB以上,为以后在SD卡中放各种测试文件做准备),填好以后就可以Create AVD了。由于需要建立和SD Card Size一样大小的映像文件,所以创建的size越大所耗费的时间也就越多,不要着急哦。
创建完模拟器后可以直接在AVDManager中选中刚刚创建的模拟器,点击start…就可以启动模拟器了。模拟器的启动也需要4-5分钟的时间。
当然模拟器也可以在启动程序的时候由eclipse自动启动。
在工程上点击右键,右键菜单中有Debug As/RunAs->Android application;或者选中工程后,run菜单栏中也有同样的菜单项。如果当前模拟器没有启动时,就会先自动启动模拟器。当然前提条件是工程没有错误。
有时候创建出来的模拟器启动后会莫名其妙的异常,可能有效的方法是:
1、 删除当前模拟器重新创建
2、 新建的模拟器异常可以加大SDcard Size的大小
3、 创建模拟器时EnabledSnapshot,该功能会在模拟器关闭时保存当时状态,启动时会自动加载上次的状态
4、 删掉模拟器镜像路径*\.android下的avd文件夹
5、 删掉*\.android下的modem-nv-ram*文件
-
Android入门 — 新建工程及结构认识
2013-03-15 16:30:38
许是因为在大学第一个写的程序就是HelloWorld,以后每次学一个新的东西,总是没有出息的先建一个HelloWorld的程序。也是,任何东西新出来,都需要和这个世界打个招呼吧,hello,world!言归正传,开始和这世界打个招呼吧。
1、新建一个Android的工程
如果开发环境配置正确,在New的菜单中就会出现AndroidProject,就可以新建工程了。
我们在工程名称处写入HelloWorld,选择 Createnew project in workspace,点击Next,选择SDK后继续Next,出现输入包名的界面:
第一次看到这个界面真是犯愁啊,“your.package.namespace”,以前写C++的代码从来没有过包的概念,到底写什么好呢?踌躇了一会,以cs.demo.firstcode为包名,反正都是demo程序,哈哈。
2、工程结构认识
src是工程的代码文件夹,代码文件都放在此文件夹下。cs.demo.firstcode是刚刚建的包,下面是自动创建的HelloWorldActivity.java的代码文件;
gen文件夹下的R.java自动生成的文件,里面记录了程序中用到的各种ID,不要手动修改。当res文件夹下的内容发生变化时,这个R.java文件会自动改变。这个与MFC中的resource.h文件类似。
assets文件夹主要用来存放一些多媒体数据文件,不会被改变
res文件夹存放的是资源相关的文件:
res/drawable*:存放图片文件
res/layout:存放xml的布局文件。写了近三年的自绘界面的代码,看到这个类似MFC的可以拖拽界面元素的功能,着实让我高兴了一下。
res/values:存放字符串,颜色,数组等常量数据,常用的字符串存放在string.xml文件里,在程序中各处就可以使用ID实现字符串共享了。
AndroidManifest.xml:应用的配置文件,声明activity和权限的地方。
题外话:建立工程的其他方式
为什么要写这个呢?我第一次拿到别人提供的工程时,根本就不知道从哪里下手。还是因为VC的思维模式,我在文件夹中找不到工程文件时,就很迷茫了。
一看.project文件还恍然以为找到了入口,不成功又把每个根目录下的文件每个打开了一遍,现在想来真是太可乐了。所以写下简单的创建工程的方式:
1)File->New->Androidproject->Create project from existing source:只需要选择工程所在文件夹就可以了,其他选项都会有默认的设置。
2)File->New->Androidproject->Create project from existing sample:android自带了各种示例程序,选择某个示例程序后,会创建对应的工程
3)File->Import->General->ExistingProjects into Workspace,然后选择文件夹所在的根目录,就可以导入工程了。
-
Android学习之通过Intent实现浏览网页
2013-03-15 16:21:23
大家好,在这里和大家分享我刚刚学到的知识:通过Intent打开网页
首先,打开布局文件中main.xml,创建为LinearLayout布局,并且创建一个EditText和Button控件。具体代码如下:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="horizontal"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <EditText
- android:id = "@+id/editText"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_weight="1.0"
- android:lines="1"
- />
- <Button
- android:id = "@+id/button1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text = "go"
- />
- </LinearLayout>
效果如图:
- package org.exmaple.MyBrowserIntent;
- import android.app.Activity;
- import android.content.Intent;
- import android.net.Uri;
- import android.os.Bundle;
- import android.view.KeyEvent;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.view.View.OnKeyListener;
- import android.widget.Button;
- import android.widget.EditText;
- public class MyBrowserIntent extends Activity {
- private EditText editText;
- private Button goButton;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- editText = (EditText) findViewById(R.id.editText);
- goButton = (Button) findViewById(R.id.button1);
- editText.setOnKeyListener(new OnKeyListener() {
- //按钮键盘点击事件
- @Override
- public boolean onKey(View arg0, int arg1, KeyEvent arg2) {
- // TODO Auto-generated method stub
- if(arg1 == KeyEvent.KEYCODE_ENTER) {
- //用户按了Enter则调用openBrowser()方法
- openBrowser();
- return true;
- }
- return false;
- }
- });
- goButton.setOnClickListener(new OnClickListener(){ //按钮绑定点击事件
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- openBrowser();
- }
- });
- }
- protected void openBrowser() {
- // TODO Auto-generated method stub
- Uri uri = Uri.parse("http://"+editText.getText().toString());
- //通过Uri获得编辑框里的//地址,加上http://是为了用户输入时可以不要输入
- Intent intent = new Intent(Intent.ACTION_VIEW,uri);
- //建立Intent对象,传入uri
- startActivity(intent);
- //启动
- }
- }
到这里就一切OK啦!
哈哈!看下效果图:
输入www.google.com
还请大家多多关注我的博客,我会和大家分享我的学习成果的!
-
Android学习之利用WebView打开网页
2013-03-15 16:19:48
大家好,今天我们一起学习通过webView打开网页:
首先还是布局文件main.xml的Code:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <LinearLayout
- android:orientation="horizontal"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- >
- <EditText
- android:id="@+id/editText"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1.0"
- android:lines="1"
- />
- <Button
- android:id="@+id/button"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="go"
- />
- </LinearLayout>
- <WebView
- android:id="@+id/webView"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1.0"
- />
- </LinearLayout>
利用两个LineraLayout的嵌套显示,上面显示一个编辑框和按钮,下面的是webView用来显示网页,大家要注意两个LineraLayout的android:orientation的属性,最外面的这个是垂直显示,里面的是水平显示,最终得到效果如图:
效果图下面的白色区域就是webView,等Java的Code完成后就能看出效果啦,期待吧!呵呵!
- import android.app.Activity;
- import android.widget.*;
- import android.os.Bundle;
- import android.webkit.*;
- import android.view.KeyEvent;
- import android.view.View;
- import android.view.View.*;
- public class MyBrowserView extends Activity {
- private EditText editText;
- private Button button;
- private WebView webView;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- editText = (EditText) findViewById(R.id.editText);
- button = (Button) findViewById(R.id.button);
- webView = (WebView) findViewById(R.id.webView);
- button.setOnClickListener(new OnClickListener() {
- //同样为按钮绑定点击事件
- public void onClick(View v) {
- openBrowser();
- }
- });
- editText.setOnKeyListener(new OnKeyListener() {
- //同样为编辑框绑定键盘事件
- @Override
- public boolean onKey(View v, int keyCode, KeyEvent event) {
- // TODO Auto-generated method stub
- if(keyCode==KeyEvent.KEYCODE_ENTER) {
- openBrowser();
- return true;
- }
- return false;
- }
- });
- }
- //利用webView的loadUrl方法
- public void openBrowser() {
- webView.loadUrl("http://"+editText.getText().toString());
- }
- }
除了openBrowser()方法,其他的和用Intent打开网页是差不多的。
只要利用webView的loadUrl()方法就能加载网页。好的什么也不说啦!看效果图:
哈哈,不错吧,这样就方便打开别的网页啦!哦!差点忘了,要在AndroidManifest.xml中加入
<uses-permission android:name="android.permission.INTERNET">
否则就不能访问Internet哟!
到这里看了上一篇的同学可能就问,为什么上个例子不要加上这条语句呢?
因为通过Intent就能请求其他应用程序查看网页,而其他应用程序需要在自己的AndroidManifest.xml中请求获得访问Internet的权限。
不知道解释的清楚不?呵呵!
好了今天的就到这里了哟!祝大家一起进步!加油!
-
android中两种方式打开网页(
2013-03-15 16:15:06
一.你要打开一个网页你可以自己写一个webview,在自己的程序中就可以打开.wv = (WebView) findViewById(R.id.webView1);wv.getSettings().setJavaScriptEnabled(true);wv.setScrollBarStyle(0);WebSettings webSettings = wv.getSettings();webSettings.setAllowFileAccess(true);webSettings.setBuiltInZoomControls(true);wv.loadUrl("http://www.baidu.com");//加载数据wv.setWebChromeClient(new WebChromeClient() {@Overridepublic void onProgressChanged(WebView view, int newProgress) {if (newProgress == 100) {MainActivity.this.setTitle("加载完成");} else {MainActivity.this.setTitle("加载中.......");}}});//这个是当网页上的连接被点击的时候wv.setWebViewClient(new WebViewClient() {public boolean shouldOverrideUrlLoading(final WebView view, final String url) {loadurl(view, url);return true;}});// goBack()表示返回webView的上一页面 public boolean onKeyDown(int keyCoder, KeyEvent event) {if (wv.canGoBack() && keyCoder == KeyEvent.KEYCODE_BACK) {wv.goBack();return true;}return false;}二.不然你就调用android内置安装的浏览器来打开网页.1. Uri uri = Uri.parse("http://google.com");
2. Intent it = new Intent(Intent.ACTION_VIEW, uri);
3. startActivity(it);
我的栏目
标题搜索
我的存档
数据统计
- 访问量: 144877
- 日志数: 66
- 图片数: 1
- 建立时间: 2009-01-07
- 更新时间: 2014-03-11