前言
我從2014年開始接觸Android開發(fā)葵萎,作為一個非科班出身的女程序員,我在android這條道上已經走了3年唱凯。三年中羡忘,參加了大大小小快10個項目。經歷了種種的坑磕昼,在不停學習的同時卷雕,我想自己應該把這些我與Android的事情寫下來。用我自己的經歷票从,解決大家一些問題漫雕。同時滨嘱,如果有更好的解決方法,希望大家能夠提出來蝎亚,一起學習九孩。
如何從自己的應用打開郵箱
現在的公司是一個日企,很多需求和國內有很大的不同发框,比如說UI躺彬,日本喜歡可愛的畫面,每個頁面都是填充的滿滿的梅惯;比如說功能設計宪拥;比如說習慣操作和我們有很多不一樣等等。這給我?guī)砹撕芏嗫鄲老臣酢_@些都將在后面慢慢的和大家介紹她君。
現在的項目需要從自己的應用打開郵箱。這是一個很簡單的功能葫哗,相信很多朋友都做過通過自己的app發(fā)送郵件缔刹、短信等等。但是就是這么一個簡單的功能劣针,確難倒我了校镐。?
明確的需求:點擊“open”按鈕,打開郵箱選擇框捺典,點擊所選郵箱后跳轉至郵箱鸟廓。
就是這么簡單的需求。很簡單襟己,使用Intent.action就可以實現了引谜。代碼如下:
Intent intent=new Intent(android.content.Intent.ACTION_SEND);
intent.setType("text/plain");
startActivity(Intent.createChooser(intent,"分享一下"));
很簡單的幾行代碼。但是一運行就發(fā)現不一樣了擎浴。需求中 “點擊所選郵箱后跳轉至郵箱” 员咽。但是這樣做的結果是點擊跳轉的是寫郵件的頁面。不一樣爸ぁ骏融!
認真思考后,我認為一下的想法可能能夠實現:
1萌狂、可能存在直接調用系統(tǒng)郵箱的方法。
2怀泊、獲取郵箱的包名茫藏,通過郵件的包名打開郵箱。
第一種方法實在沒有找到霹琼,默認為沒有务傲。如果哪位朋友知道凉当,還請不吝賜教。
現在說第二種方法
Uri uri = Uri.parse("mailto:"+emailText);
List packageInfos = getPackageManager().queryIntentActivities(newIntent(Intent.ACTION_SENDTO, uri),0);
List packageList =newArrayList<>();
List emailIntents =newArrayList<>();
for(inti =0; i < packageInfos.size(); i++) {
String packageName = packageInfos.get(i).activityInfo.packageName;
if(packageList.contains(packageName)) {
packageList.remove(packageName);
}
packageList.add(packageName);
}
for(inti =0; i < packageList.size(); i++) {
Intent intent = getPackageManager().getLaunchIntentForPackage(packageList.get(i));
emailIntents.add(intent);
}
Intent chooserIntent = Intent.createChooser(emailIntents.remove(0),"Select app!");
if(chooserIntent !=null) {
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, emailIntents.toArray(newParcelable[]{}));
startActivity(chooserIntent);
}
再次嘗試售葡,成功啦看杭!
小結
雖然是一個很小的功能,但是從這個小功能中挟伙,我們能夠明白:當沒有現成的可以使用時楼雹,我們應該思考,運用現有的方法去達到我們的目的尖阔!下一期我想和大家分享的是:方便高效仿IOS dialog贮缅。
>原文作者litterMay