As in my previous blog , already mentioned to create about OData Service feed in ATOM format which can be consumed in Windows Phone 7, Android, iPhone/iPAD , Silverlight,PHP, Windows Azure Table Storage clients.
- Lets check , how to consume the OData WCF REST service in Android client. To work with OData Android client lets download Odata4j Android client library from RESTlet: http://www.restlet.org/downloads/ & select the OData4j-Bundle.jar in Java Build Path of your Android project.
- Next, to consume OData service from android device, we need to host the service in IIS. In my demo, i have hosted it in IIS 7.5.
- Now, Start develop an android client application which can consume OData feed.
- Modify AndroidManifest.xml as it can consume feed from internet from native application:
<uses-permissionandroid:name=“android.permission.INTERNET”>
</uses-permission>
Write code for Activity.java :
package com.example.android.OData;
import java.util.ArrayList;
import java.util.List;
import org.odata4j.consumer.ODataConsumer;
import org.odata4j.core.OEntity;
import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
public class JsonGrabbingConsumerExampleActivity extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, GetExpenseReports()));
getListView().setTextFilterEnabled(true);
}
// read expenses odata feed
ArrayList<String> GetExpenseReports()
{
// build a simple array list of strings to test things out
ArrayList<String> listUI = new ArrayList<String>();
// use odata4j consumer
ODataConsumer c = ODataConsumer.create(http://10.12.1.223/ODataSample1/Service.svc);
// run a query just for Pending states
List<OEntity> listExpenses = c.getEntities(“SampleCustomerData”).execute().toList();
for(OEntity expense : listExpenses) {
listUI.add(expense.getProperty(
“CustomerID”).getValue().toString()
+
“; “ + expense.getProperty(“CustomerName”).getValue().toString()
+
“; “ + expense.getProperty(“CustomerNotes”).getValue().toString()
);
}
return listUI;
}
}
