PDFダウンロードが出来ない。

開発中のWEBアプリケーションで、とあるリンクをクリックするとPDFファイルをダウンロードするという機能があります。
PC、iPhoneはOKだったんですが、Androidではダウンロードしたファイルが不明なファイルとして扱われ、ビューワで開く事ができません。
ちなみに、Androidのバージョンは2.1です。XperiaとIS03で確認済み。
Xperiaの1.6だと出来てた。


原因は、サーバー側の問題で、レスポンスヘッダの指定の仕方に問題があった模様。

ダメだったコード。

サーバーサイドはjavaで組まれています。

response.setContentType("application/octet-stream");
response.setHeader("Content-disposition", "attachment;filename=\"" + getEndodedFileName(fileName) + "\"");

上手くいったコード。

String mimeType = getServlet().getServletContext().getMimeType(fileName);            
response.setContentType(mimeType);
response.setHeader("Content-disposition", "attachment;filename=\"" + getEndodedFileName(fileName) + "\"");

contentTypeの部分は実際には「application/pdf」となります。
「octet-stream」ではAndroidはPDFファイルと認識してくれないようです。

jQuery mobileの$.mobile関数がもっているプロパティや関数一覧

なんかの役に立つかもしれないので、メモ。

activeBtnClass:string
activePage:object
activePageClass:string
addResolutionBreakpoints:function
ajaxFormsEnabled:boolean
ajaxLinksEnabled:boolean
button:function
changePage:function
checkboxradio:function
collapsible:function
defaultTransition:string
dialog:function
gradeA:function
idStringEscape:function
listview:function
loadingMessage:string
metaViewportContent:string
navbar:function
nonHistorySelectors:string
page:function
pageLoading:function
selectmenu:function
silentScroll:function
slider:function
subPageUrlKey:string
textinput:function
transitions:object
updateHash:function
urlStack:object
widget:function


一覧表示のプログラムはこんな感じです。

var ary = [];
for(var x in $.mobile) {
	ary.push(x + ":" + typeof($.mobile[x]));
}
console.info(ary.sort().join("\r\n"));