`
JerryWang_SAP
  • 浏览: 1030799 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

使用SAP OData offline库实现Android应用的离线(offline)模式

阅读更多

打开Android studio,在工程的build.gradle里加入下面的依赖,导入SAP OData offline库:

implementation group:'com.sap.cloud.android', name:'offline-odata', version: sdkVersion

点击Sync now:

新建一个java文件:SAPServiceManager.java

使用的import如下:

import android.content.Context;
import android.util.Log;
import android.widget.Toast;
import com.sap.cloud.mobile.odata.core.AndroidSystem;
import com.sap.cloud.mobile.odata.offline.OfflineODataDefiningQuery;
import com.sap.cloud.mobile.odata.offline.OfflineODataException;
import com.sap.cloud.mobile.odata.offline.OfflineODataParameters;
import com.sap.cloud.mobile.odata.offline.OfflineODataProvider;
import java.net.MalformedURLException;
import java.net.URL;


// 将OfflineODataProvider注释掉,改为OfflineODataProvider
//private OnlineODataProvider provider;
private OfflineODataProvider provider;
private static final String TAG = SAPServiceManager.class.getName();

OData offiline datastore的setup方法:


public void openODataStore(Action0 callback, Context context) {
    setupOfflineOData(callback, context);
}


private void setupOfflineOData(Action0 callback, Context context) {
    try {
        if (configurationData.loadData()) {
            Toast.makeText(context, "Opening the offline store which may take a few moments the first time it is opened.", Toast.LENGTH_LONG).show();
            //Initialize application context for use by OfflineODataProvider
            AndroidSystem.setContext(context);
            //commonly set parameters include setStoreEncryptionKey, setStoreName, setStorePath
            OfflineODataParameters offParam = new OfflineODataParameters();
            String serviceUrl = configurationData.getServiceUrl();
            URL url = new URL(serviceUrl + CONNECTION_ID_ESPMCONTAINER);
            provider = new OfflineODataProvider(url, offParam, ClientProvider.get());
            //Specifies which entities we wish to include in the offline store
            provider.addDefiningQuery(new OfflineODataDefiningQuery("Customers", "Customers", false));
        }
  } catch (MalformedURLException e) {
      e.printStackTrace();
  } catch (OfflineODataException e) {
      e.printStackTrace();
  }
  //opens the offline store.  This can take a minute or so the first time it is called as it is created and populated.
  Log.d(TAG, "About to call open on the offline store.");
  provider.open(() -> {
      Log.d(TAG, "Offline store opened.");
      eSPMContainer = new ESPMContainer(provider);
      callback.call();
      syncOfflineData();  //TODO could be triggered via a menu action
  }, (OfflineODataException offlineODataException) -> {
      Log.d(TAG, "Offline store did not open.", offlineODataException);
  });
}


public void syncOfflineData() {
    //send the local changes to the back end OData service
    Log.d(TAG, "About to call provider.upload.");
    provider.upload(() -> {
        Log.d(TAG, "Successfully uploaded the changed data.");
        //get changes from the back end OData service.
        provider.download(() -> {
            Log.d(TAG, "Successfully downloaded the changed data.");
        }, (error) -> {
            Log.d(TAG, "Failed when downloading the changed data with error: " + error.getMessage());
        });
    }, (error) -> {
        Log.d(TAG, "Failed when uploading the changed data with error: " + error.getMessage());
    });
}


public String getServiceRoot() {
    if (configurationData.loadData()) {
        String serviceUrl = configurationData.getServiceUrl();
        if (serviceRoot == null) {
            serviceRoot = serviceUrl + "/" + CONNECTION_ID_ESPMCONTAINER;
        }
    }
    else {
        throw new IllegalStateException("SAPService manager configurationData.loadData() failed.");
    }
    return serviceRoot;
}

新建LogonActivity.java,调用之前实现的sapServiceManager.openODataStore:

第一次运行应用,会发现offline OData store的初始化日志:

现在可以测试离线模式了,打开移动设备的飞行模式:

选择存储于OData offline store上的某个客户,点击编辑按钮:

修改city字段:

关闭该应用,关闭设备的飞行模式,再启动该应用,在logcat里能观察到之前处于离线模式修改的数据已经自动同步到了后台online store里:

0
0
分享到:
评论

相关推荐

    JAVA调用SAP ODATA服务.docx

    本文将详细介绍如何使用Java调用SAP ODATA服务,并针对描述中的几个关键问题进行深入探讨。 #### 1. 未经授权 (401) 在调用SAP ODATA服务时,如果出现“401 Unauthorized”错误,通常是因为服务器拒绝了请求,因为...

    JAVA调用SAP ODATA服务

    在Java开发中,调用SAP ODATA服务是企业级集成和数据交换的常见场景。在实际操作中,可能会遇到一些挑战,如身份验证、请求方法的使用、跨域问题以及错误处理。以下是对这些知识点的详细说明: 1. **身份验证 (401 ...

    SAP UI5 OData开发

    在进行SAP NetWeaver的Gateway服务开发时,我们使用OData通道方法来实现。SAP为这个过程提供了一份How-To Guide,指导开发者如何编写OData通道。该指南涵盖了从创建模型提供类(Model Provider Class)开始的所有...

    SAP 后台ODATA开发步骤

    在SAP系统中,ODATA是一种基于RESTful协议的Web服务技术,用于提供与后端业务数据的交互接口。本文将详细介绍SAP后台...通过这样的服务,前端应用可以轻松地与SAP后台系统进行数据交互,实现业务流程的自动化和集成。

    Sap Odata ABAP开发教程.zip

    一个典型的场景是移动应用与SAP后端系统的集成,通过ODATA服务,移动应用可以直接查询、修改SAP系统中的业务数据,实现无代码或低代码开发。 本教程将详细介绍以上概念,并通过实际示例指导你完成一个完整的SAP ...

    SAP Fiori Odata 实施步骤

    ### SAP Fiori OData 实施步骤详解 #### 一、OData与SAP Fiori的关系 在SAP Fiori环境中,OData(Open Data Protocol)扮演着至关重要的角色。它是一种用于定义构建和消费RESTful API的最佳实践的标准协议。通过...

    OData简单demo

    在实际应用中,OData常用于构建RESTful API,使得不同平台和设备上的应用可以轻松地与后端数据服务进行交互。通过这个简单的demo,学习者可以了解OData的工作原理,以及如何在实际开发中利用这些查询选项来优化数据...

    android 访问 OData

    Android应用开发者可以利用OData库来实现与服务器上的数据源进行通信,如微软的SharePoint、SAP等支持OData的服务。 在给定的资源中,我们看到一个名为"odata_1.jar"的文件,这很可能是用于Android平台的OData...

    SapAPI:读取SAP ODATA API

    SapAPI 该程序正在读取SAP API。 此API从防火墙后面的SAP ECC系统公开ODATA。 需要一个天蓝色的AD帐户,一个SAP-id,包括访问SAP系统中技术角色的权限。 SAP API已在Azure API管理中注册。

    SAP-odata文档

    6. **移动应用开发**:如何利用SAP Gateway和OData创建适应不同移动设备的应用,包括iOS和Android平台。 7. **企业级应用集成**:讨论如何将SAP Gateway和OData服务与其他系统集成,如社交媒体、物联网(IoT)设备或...

    SAP Gateway and OData

    【SAP Gateway与OData】是SAP低代码开发中的关键组成部分,对于理解和实现企业级应用集成至关重要。SAP Gateway是一种技术平台,它允许不同系统之间的数据交换,特别是与SAP系统和其他非SAP系统之间的交互。OData...

    SAP-Fiori---快速指南.docx

    SAP Fiori 是 SAP 软件和应用程序的新用户体验(UX),提供了一组应用程序,用于常规业务功能,如工作批准,金融应用程序,计算应用程序和各种自助服务应用程序。SAP Fiori 提供了 300 多个基于角色的应用程序,如...

    SAP Gateway – Building OData V2 Services Gw100

    消费者可以使用多种方式利用OData服务,如使用SAP UI5框架构建前端应用,或者通过编程语言(如Java、.NET或JavaScript)的库直接调用API。此外,其他非SAP平台如Microsoft PowerApps或Salesforce也可轻松集成SAP ...

    OData经典入门.pdf

    OData,全称为Open Data ...对于SAP环境而言,OData服务是实现移动应用、Web应用以及与其他系统集成的重要手段。了解和掌握OData,对于任何希望扩展SAP系统功能并实现跨平台数据交互的开发人员来说,都是非常有价值的。

    OData与SAP.pdf

    OData:开放数据协议(Open Data Protocol,简称OData)是一种描述如何创建和访问Restful服务的OASIS标准。该标准由微软发起,前三个版本1.0、2.0、3.0都是微软开放标准,遵循微软开放规范承诺书(Microsoft Open ...

    OData Framework 3.0 英文

    该框架不仅支持在线和离线模式下的数据访问,还提供了一系列高级功能,如安全性、推送通知、性能监测等,以满足企业级应用的需求。此外,文档还指出了未来版本中计划增加的一些特性和功能,这些改进将进一步提升...

    SAP Gateway and OData.zip

    sap press doc 解压密码:abap_developer

    Tutorial to Develop a SAPUI5 Application with oData Access

    在本教程中,我们将深入探讨如何开发一个使用SAPUI5和oData访问的数据交互应用程序。SAPUI5是SAP提供的一个强大的JavaScript框架,用于构建企业级的Web应用程序。而oData是一种开放的协议,它允许客户端通过HTTP访问...

    com.sap.core.odata.processor.api-0.7.0.zip

    SAP Core OData Processor API是SAP开发的一个关键组件,它主要用于处理OData(Open Data Protocol)服务的实现,这是一种基于RESTful架构的数据访问协议,广泛应用于企业级应用程序,特别是那些基于云服务的系统。...

    C#调用SAP接口

    首先,理解"C#调用SAP接口"这个主题,我们需要知道的是,SAP提供了NetWeaver Gateway(NW Gateway)服务,它允许外部应用,包括C#应用程序,通过标准的RESTful或OData协议访问SAP系统的数据和功能。DEV控件可能是SAP...

Global site tag (gtag.js) - Google Analytics