示例1:在APP中展示报表
创建主程序文件
按照标准方法,创建activity即可。
登陆及查看报表的接口与实现
package com.example.testinterface;
import org.json.JSONObject;
import com.raq.tab.GezAccess;
import com.raq.tab.ReportActivity;
import com.runqianapp.mobile.service.ReportProperty;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class Demo1 extends Activity implements OnClickListener
{
private TextView tip;
private EditText host;
private EditText username;
private EditText password;
private Button login;
private Button viewreport;
public static String hostdata;
public static String userdata;
public static String passdata;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.demo1);
this.setTitle("DEMO1:登陆+查看报表");
initViews();
}
private void initViews()
{
// 得到布局文件中的控件
tip = (TextView)findViewById(R.id.demo1_tip);
host = (EditText)findViewById(R.id.demo1_host);
username = (EditText)findViewById(R.id.demo1_username);
password = (EditText)findViewById(R.id.demo1_password);
login = (Button)findViewById(R.id.demo1_login);
viewreport = (Button)findViewById(R.id.demo1_report);
// 给控件添加事件
login.setOnClickListener(this);
viewreport.setOnClickListener(this);
}
@Override
public void onClick(View v)
{
if(v.getId()==R.id.demo1_login)
{
doLoginAction();
}else if(v.getId()==R.id.demo1_report)
{
doViewReportAction();
}
}
private void doLoginAction()
{
//获取页面数据
hostdata = host.getText().toString();
userdata = username.getText().toString();
passdata = password.getText().toString();
//发送请求前,先进行数据校验
if(TextUtils.isEmpty(hostdata) ||TextUtils.isEmpty(userdata)||TextUtils.isEmpty(passdata))
{
//校验失败,页面提示并返回,不继续进行
tip.setText("服务器或用户名或密码为空");
return;
}
//校验通过,调用接口进行登陆
testLogin(hostdata,userdata,passdata);
}
private void doViewReportAction()
{
//指定报表展现的宽度和高度
/** 报表视图的高度 */
String h = String.valueOf(ReportProperty.getInstance().getDeviceHeight(this)
- ReportProperty.getInstance().getTopBarHeight(this)
- ReportProperty.getInstance().getBottomBarHeight(this)
- ReportProperty.getInstance().getDeviceNotificationBarHeight(this));
/** 报表视图的宽度 */
String w = String.valueOf(ReportProperty.getInstance() .getDeviceWidth(this));
//页面跳转
testGotoReportPage(hostdata,userdata,passdata,h,w);
}
/**
* 调用接口,进行登陆
* @param hosturl 后台应用跟路径 如 http://localhost:8800/reportmis
* @param username 用户名
* @param password 密码
*/
private void testLogin(String hosturl, String username, String password)
{
try {
//传入hosturl(http://xxx:8800/reportmis) username(root) password(1)进行登录验证,得到验证结果
String result = GezAccess.accessWithParams(hosturl,username, password);
//返回的结果为json对象,并进行解析
JSONObject loginJsonObject = new JSONObject(result);
//得到登录结果,如果这个值为1,则登录成功
String loginState = loginJsonObject.getString("loginrlt");
// 登陆之后,保存sessionId到全局
String jsessionid = loginJsonObject.optString("jsessionid");
ReportProperty.getInstance().setJsessionid(jsessionid);
if("1".equals(loginState))
{
tip.setText("登录成功");
viewreport.setVisibility(View.VISIBLE);
}
} catch (Exception e)
{
e.printStackTrace();
}
}
/**
* 跳转到展现普通报表的Activity
* @param hosturl 后台应用跟路径 如 http://localhost:8800/reportmis
* @param username 用户名
* @param password 密码
* @param h 高度
* @param w 宽度
*/
private void testGotoReportPage(String hosturl, String username,String password, String h, String w)
{
String resid = "11544";
String resType = "12";
Intent reportIntent = new Intent(this, ReportActivity.class);
String forwardMsg = "{\"reportId\":\"" + resid + "\",\"reportType\":\""
+ resType + "\",\"host\":\"" + hosturl + "\",\"w\":\""
+ w + "\",\"h\":\"" + h + "\",\"userName\":\""
+ username + "\",\"passWord\":\"" + password
+ "\"}";
reportIntent.putExtra("forwardMsg", forwardMsg);
this.startActivity(reportIntent);
}
}
服务器端设置
1. 首先需要在服务器端准备一张报表,本例直接使用了demo中的报表,位置是, 手机报表->功能展示报表->锁定表头报表->客户联系信息表。
2. 服务器地址的问题。需要直接填写ip才可以。
运行结果演示
第一个页面,需要设置登陆信息。
登陆成功后,上方有提示,并出现了查看报表按钮。
点击第二个页面的查看报表,跳转到了报表查看页面。