示例1:在APP中展示报表- 集成示例-App集成文档(Android)
目录

示例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才可以。

运行结果演示

第一个页面,需要设置登陆信息。

登陆成功后,上方有提示,并出现了查看报表按钮。

点击第二个页面的查看报表,跳转到了报表查看页面。