不管你在哪裡(GAE、Java Application)要使用Picasa
都一定要reference 4個jar檔,
- gdata-core-1.0.jar
- gdata-media-1.0.jar
- gdata-photos-2.0.jar
- google-collect-1.0-rc1.jar
可是Google Code的說明文件卻少說一個,
文件上並沒有叫人家reference第四個,
但是要reference進來才不會有錯
reference進去以後就開始撰寫程式碼了
這邊是以一個
固定帳號去做登入
跟之前
在GAE中使用行事曆的例子
不一樣那個例子是會有Google登入畫面讓使用者輸入自己的帳號密碼,
然後去存取使用者自己本身的行事曆
不過這個例子不是,這個例子是用寫死的帳號密碼登入
(
如果妳一樣要讓使用者填選,那麼也是要用AuthSub來認證,可以去行事曆那個例子看,差不多)
開始撰寫程式碼了
package edu.chao.lab.servlet;
import java.io.IOException;
import java.net.URL;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.google.gdata.client.photos.PicasawebService;
import com.google.gdata.data.photos.AlbumFeed;
import com.google.gdata.data.photos.GphotoEntry;
import com.google.gdata.util.ServiceException;
public class test extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);
try {
String strAcc = "你的帳號";
String strPwd = "你的密碼";
PicasawebService service = new PicasawebService("sample");
service.setUserCredentials(strAcc, strPwd); //登入
URL feedUrl = new URL("https://picasaweb.google.com/data/feed/api/user/"+strAcc+"?kind=album");
AlbumFeed myUserFeed = service.getFeed(feedUrl, AlbumFeed.class); //取得所有相簿烈表
List<GphotoEntry> lAlbum = myUserFeed.getEntries();
for (GphotoEntry myAlbum : lAlbum) {
resp.getWriter().println(myAlbum.getTitle().getPlainText());//印出相簿名稱
resp.getWriter().println(myAlbum.getGphotoId()); //印出相簿編號
}
} catch (ServiceException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
這樣就完成了讀取相簿列表
今早才看到
Chrome Web Store的Chrome App
就覺得這個跟 Chrome Extension一樣
先做先贏,
就想說趕緊來做一個,
去看了一下API,
其實我對Chrome App有點失望...
我覺得根本就只是轉址而已(個人愚見)
爆發點應該會是在Google TV上的應用!
不過對廠商來說,的確是多了一個管道銷售。(更何況是Google幫它銷售)
對廠商來說,有利無弊。
但是對我這種開發者而言,似乎沒有什麼太大意義。
畢竟你還是得先有一個服務(不管是game、小工具)
然後透過Chorme App轉址過去....
好吧,費話不多說,
就直接教學了,
其實Chrome App和Chrome Extension差不多
都是利用json來部屬。
我這裡就直接PO範例了
{
"name": "App的名稱",
"version": "2",
"description": "打你要描述的內容.",
"app": {
"launch": {
"web_url": "http://www.google.com.tw/"
}
},
"icons": {
"128": "icon.png"
}
}
而上傳方式就跟上傳Chrome Extension一樣,
大家可以去參考
這篇
Android connect to MSN (JML)
在Android用Java MSN Messenger Library(JML)登入
其實JML是一個很好用的lib,
在J2SE的環境下使用非常好整合,
BUT...要整合至ANDROID中會有幾個小問題。
第一:會少了一個GetPropertyAction的CLASS
第二:JML裡用的SSL是採取SSLv3,但是android只能支援TLS
第三:一樣會少了一個DatatypeFactory這個CLASS
解決方法就是
直接去找到JML的source code,
直接拿它來做修改,而不是直接去拿jar來用。
為了解決第一部,
我們可以在網路上找到人家寫好的這個class(GetPropertyAction)
來這下載下載好以後,記得放在package名稱為sun.security.action的底下
解決第二個方法就是
去下載JML的SOURCE CODE
來這下載 (是載.ZIP檔案喔,這樣才會有SOURCE CODE)
下載完成後,把src資料夾底下的net通通拉進來我們的project裡面
拉進來後,畫面會如下
拉進來以後,
找到package名稱為net.sf.jml.protocol.soap,
點兩下展開以後,
點選class名稱為ContactList的class
打開以後找到下面那行CODE
SSLContext sc = SSLContext.getInstance("SSLv3");
把它改成下面那行CODE
SSLContext sc = SSLContext.getInstance("TLS");
這樣第二部就解決了。
至於第三個解決方式,
目前是先把ANDROID SDK設為2.2,
2.2就有支援DatatypeFactory,
接著來寫連結至msn的code了。
其實很簡單,你只要克服上面的問題,
CODE應該就難不倒你,
try {
final String email = "msn帳號";
final String password = "您的密碼";
final MsnMessenger messenger = MsnMessengerFactory.createMsnMessenger(email,
password);
messenger.getOwner().setInitStatus(MsnUserStatus.ONLINE);
//這邊一定要用thread去執行登入
Thread thread = new Thread(new Runnable() {
public void run() {
messenger.login();
}
});
thread.start();
} catch (Exception e) {
Log.d("msn",e.toString());
}
這樣就完成了MSN登入了。
至於怎麼截取聯絡人清單,只要您解決上面那三個問題
則擷取連絡人,就不是問題了。