Android 小知識(shí)

以下內(nèi)容是針對(duì) 納蘭寒明 發(fā)布 《android 小知識(shí) 1》 和 《android 小知識(shí) 2》文章做了更改,內(nèi)容會(huì)不斷補(bǔ)充更新,也歡迎你的留言補(bǔ)充佛致。

1.FragmentActivity與Activity的區(qū)別

FragmentActivity 繼承自 Activity贮缕,是去解決 Android3.0之前沒(méi)有fragment 的 api 的問(wèn)題,在3.0后俺榆,其與 Activity 的功能是一樣的感昼。

FragmentActivity 的使用

在android3.0之前:getSupportFragmentManager()

在android3.0之后:getFragmentManager()

2.MediaType的使用

Internet Media Type ,互聯(lián)網(wǎng)媒體類型,也叫 MIME 類型罐脊,在 Http協(xié)議消息頭中定嗓,使用 Content-Type 來(lái)表示具體請(qǐng)求中的媒體類型信息,使用兩部分的標(biāo)識(shí)符來(lái)確定一個(gè)類型

例如:application/json:json 格式
application/xxx:xxx格式

3.Pattern和Matcher

兩個(gè)均屬于java中正則表達(dá)式類萍桌,

4.@suppressLint(“NewApi”)的意義

該代碼經(jīng)常出現(xiàn)在類之前蜕乡,其存在的目地是屏蔽Android lint錯(cuò)誤,在使用當(dāng)前的 Android版本中高于android:minSdkVersion時(shí)使用梗夸,避免編譯器警告。

5. 3DES和Base64的說(shuō)明

3DES是三重DES加密号醉,對(duì)于DES來(lái)說(shuō)反症,當(dāng)前科技可以暴力破解,而3DES是將其進(jìn)行三重DES加密畔派,這樣可以延長(zhǎng)暴力破解的時(shí)間.

Base64是用于傳輸8bit字節(jié)代碼的編碼方式之一铅碍。

6.linux中文件系統(tǒng)

  • 第一個(gè)字符表示文件類型:

'd',目錄
'l'线椰,軟鏈接
'b'胞谈,塊設(shè)備
'c',字符設(shè)備
's'憨愉,socket
'p'烦绳,管道
'-',普通文件

  • 最后一個(gè)字符:

'r'配紫,表示允許讀權(quán)限
'w'径密,表示允許寫權(quán)限
'x',表示允許執(zhí)行權(quán)限

7.Butterknife框架

view 注入框架躺孝,減少大量的 findViewByIdsetOnClickListener享扔,可視化一鍵生成

8.res和asset區(qū)分

res下為可編譯的資源文件

assets下為原生資源文件,不會(huì)被R.文件編譯植袍,加載這些原生資源惧眠,需要調(diào)用其方法。

9.WebView屬性信息:

 webView.getSettings().setSupportZoom(false);//設(shè)置WebView是否支持使用屏幕控件或手勢(shì)進(jìn)行縮放于个,默認(rèn)是true氛魁,支持縮放。
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {//判斷版本大于17
            webView.getSettings().setMediaPlaybackRequiresUserGesture(false);//設(shè)置WebView是否通過(guò)手勢(shì)觸發(fā)播放媒體,默認(rèn)是true呆盖,需要手勢(shì)觸發(fā)拖云。
        }
        webView.getSettings().setBuiltInZoomControls(true);//設(shè)置WebView是否使用其內(nèi)置的變焦機(jī)制,該機(jī)制集合屏幕縮放控件使用应又,默認(rèn)是false宙项,不使用內(nèi)置變焦機(jī)制。
        webView.getSettings().setDisplayZoomControls(false);//設(shè)置WebView使用內(nèi)置縮放機(jī)制時(shí)株扛,是否展現(xiàn)在屏幕縮放控件上尤筐,默認(rèn)true,展現(xiàn)在控件上洞就。
        webView.getSettings().setAllowFileAccess(false);//設(shè)置在WebView內(nèi)部是否允許訪問(wèn)文件盆繁,默認(rèn)允許訪問(wèn)。
        webView.getSettings().setAllowContentAccess(true);//設(shè)置WebView是否使用其內(nèi)置的變焦機(jī)制旬蟋,該機(jī)制結(jié)合屏幕縮放控件使用油昂,默認(rèn)是false,不使用內(nèi)置變焦機(jī)制倾贰。
        webView.getSettings().setLoadWithOverviewMode(false);//設(shè)置WebView是否使用預(yù)覽模式加載界面冕碟。
        webView.getSettings().setSaveFormData(false);//設(shè)置WebView是否保存表單數(shù)據(jù),默認(rèn)true匆浙,保存數(shù)據(jù)安寺。
        webView.getSettings().setTextZoom(100);//設(shè)置WebView是否保存表單數(shù)據(jù),默認(rèn)true首尼,保存數(shù)據(jù)挑庶。
        webView.getSettings().setUseWideViewPort(false);//設(shè)置WebView是否使用viewport,當(dāng)該屬性被設(shè)置為false時(shí)软能,加載頁(yè)面的寬度總是適應(yīng)WebView控件寬度迎捺;當(dāng)被設(shè)置為true,當(dāng)前頁(yè)面包含viewport屬性標(biāo)簽查排,在標(biāo)簽中指定寬度值生效破加,如果頁(yè)面不包含viewport標(biāo)簽,無(wú)法提供一個(gè)寬度值雹嗦,這個(gè)時(shí)候該方法將被使用范舀。
        webView.getSettings().setSupportMultipleWindows(true);//設(shè)置WebView是否支持多屏窗口,參考WebChromeClient#onCreateWindow了罪,默認(rèn)false锭环,不支持。
        webView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm l);//設(shè)置WebView底層的布局算法泊藕,參考LayoutAlgorithm#NARROW_COLUMNS辅辩,將會(huì)重新生成WebView布局
        webView.getSettings().setStandardFontFamily("sans-serif");//設(shè)置WebView標(biāo)準(zhǔn)字體庫(kù)字體,默認(rèn)字體“sans-serif”。

更多 webview屬性信息訪問(wèn)http://teachcourse.cn/android-webview-websettings

另外玫锋,webview 中存在js的彈窗顯示蛾茉,需要手動(dòng)添加,webview 并不能處理js的彈窗撩鹿,http://blog.csdn.net/mchenys/article/details/49930739

10.獲取手機(jī)信息:

 //獲取手機(jī)信息
        TelephonyManager telephonyManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
        String imei = telephonyManager.getDeviceId();
        String mtype = Build.MODEL;//手機(jī)型號(hào)
        String mrelease = Build.VERSION.RELEASE;//系統(tǒng)版本號(hào)
        String phone_company = Build.BRAND;//手機(jī)廠商

詳見(jiàn):http://blog.csdn.net/hytfly/article/details/8552483

11.TextSwitcher:

設(shè)置文本滾動(dòng)谦炬,交換textview文本信息的

12. Apk打包:

1)Android 系統(tǒng)要求所有的app文件在 android 手機(jī)上都需要打包,所以系統(tǒng)默認(rèn)自動(dòng)給應(yīng)用程序簽名节沦,ADT 會(huì)自動(dòng)使用 debug 密鑰為應(yīng)用程序簽 名键思,debug 密鑰是一個(gè)名為debug.keystore 的文件,位置位于電腦的:

/kang/.Android/debug.keystore甫贯,其中的kang是電腦的用戶名吼鳞。

2)在使用百度地圖中需要apk的簽名中的SHA1序列,可以找到debug.keystore的位置叫搁,使用dos命令輸入:

keytool -v -list -keystore debug.keystore

密碼默認(rèn)為android赔桌,即可獲取debug簽名的SHA1序列,但是記得要在百度地圖中添加開(kāi)發(fā)版本的簽名的SHA1的序列渴逻,如果簽名不同疾党,記得在百度地圖控制臺(tái)更換SHA1的序列,保證app正常使用裸卫。

3)在打包中keytool生成的mykey.keystore 包括公鑰、私鑰和證書(shū)纽竣。

make_key通過(guò)調(diào)用openssh生成公鑰和私鑰墓贿,所以生成.x509.pem和.pk8的密鑰對(duì)。當(dāng)你獲取到.x509.pem和.pk8的密鑰對(duì)時(shí)蜓氨,查看此網(wǎng)頁(yè)就可以獲取到SHA1序列聋袋。http://blog.csdn.net/s_targaze_r/article/details/50739802

13.EditText.addTextChanged:

editText.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                //輸入前
            }

            @Override
            public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
                //輸入中
            }

            @Override
            public void afterTextChanged(Editable editable) {
                //輸入后
            }
        });

14.url中的&

在與服務(wù)端進(jìn)行數(shù)據(jù)交互的過(guò)程中,通常會(huì)使用到url穴吹,這里面存在一個(gè)url中&符號(hào)的問(wèn)題幽勒。在url中會(huì)經(jīng)常出現(xiàn)url轉(zhuǎn)義出錯(cuò)的問(wèn)題,&為&所以在傳輸過(guò)程中最好將url轉(zhuǎn)義正確傳輸港令,在服務(wù)端也要正確接收啥容。

String url_encode = "";
                try {
                    url_encode = URLEncoder.encode(url,"utf-8");
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }

這里url_encode就是處理過(guò)的url保證傳輸不出錯(cuò)。

15.webview網(wǎng)頁(yè)鏈接喚醒a(bǔ)pp

<intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data
                    android:host="www.baidu.com"
                    android:scheme="http" />
                <data
                    android:host="www.baidu.com"
                    android:scheme="kang" />

            </intent-filter>

網(wǎng)頁(yè)喚醒a(bǔ)pp不止要在app中的Mainfest里面進(jìn)行更改顷霹,還要在網(wǎng)頁(yè)鏈接中進(jìn)行更改咪惠,app只負(fù)責(zé)接收對(duì)應(yīng)的<data/>數(shù)據(jù)就可以喚醒,在目前版本淋淀,我試驗(yàn)了自定義的scheme為kang遥昧,kang://www.baidu.com就可以實(shí)現(xiàn)app的喚醒,而http://www.baidu.com使用的7.1.0版本無(wú)法實(shí)現(xiàn),但是4.4.4版本網(wǎng)頁(yè)打開(kāi)就可以實(shí)現(xiàn)炭臭,這個(gè)可能和android的版本有關(guān)永脓。

另外:微信中屏蔽了scheme跳轉(zhuǎn),所以一搬都是用手機(jī)游覽器打開(kāi)才能喚起app鞋仍,另外一些手機(jī)游覽器也無(wú)法做到常摧。

16.熱更新和冷更新

  • 熱更新:所謂熱更新就是指代碼可以不通過(guò)重新打包提交AppStore的方式來(lái)更新客戶端的執(zhí)行代碼。

  • 冷更新:則與熱更新相反凿试,必須通過(guò)AppStore審核才可以更新客戶端版本排宰。

目前:ios是禁止熱更新的,可能是為了安全性的考慮那婉,為用戶營(yíng)造一個(gè)良好的使用環(huán)境板甘。
Android 可以考慮使用微信 Tinker 、 阿里 Sophix详炬。

17.isTaskRoot()

判斷本 Activity 是否在棧底盐类,或者是否是第一個(gè) Activity。

18.App安裝沖突

文件包與具有統(tǒng)一名稱的現(xiàn)有文件包存在沖突:

  1. ID相同呛谜,但簽名不同的應(yīng)用
  2. 手機(jī)上裝過(guò)其他版本的該應(yīng)用

19.防止 Apk 被反編譯

Android studio混淆代碼:

在build.gradle中設(shè)置 minifyEnabled true在跳,就會(huì)激活apk的代碼保護(hù)功能,反編譯后難以查看代碼

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末隐岛,一起剝皮案震驚了整個(gè)濱河市猫妙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌聚凹,老刑警劉巖割坠,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異妒牙,居然都是意外死亡彼哼,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門湘今,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)敢朱,“玉大人,你說(shuō)我怎么就攤上這事摩瞎∷┣” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵旗们,是天一觀的道長(zhǎng)篓吁。 經(jīng)常有香客問(wèn)我,道長(zhǎng)蚪拦,這世上最難降的妖魔是什么杖剪? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任冻押,我火速辦了婚禮,結(jié)果婚禮上盛嘿,老公的妹妹穿的比我還像新娘洛巢。我一直安慰自己弓颈,他們只是感情好渣玲,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著掏导,像睡著了一般芥炭。 火紅的嫁衣襯著肌膚如雪漓库。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,301評(píng)論 1 301
  • 那天园蝠,我揣著相機(jī)與錄音渺蒿,去河邊找鬼。 笑死彪薛,一個(gè)胖子當(dāng)著我的面吹牛茂装,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播善延,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼少态,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了易遣?” 一聲冷哼從身側(cè)響起彼妻,我...
    開(kāi)封第一講書(shū)人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎豆茫,沒(méi)想到半個(gè)月后侨歉,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡澜薄,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年为肮,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了摊册。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片肤京。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖茅特,靈堂內(nèi)的尸體忽然破棺而出忘分,到底是詐尸還是另有隱情,我是刑警寧澤白修,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布妒峦,位于F島的核電站,受9級(jí)特大地震影響兵睛,放射性物質(zhì)發(fā)生泄漏肯骇。R本人自食惡果不足惜窥浪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望笛丙。 院中可真熱鬧漾脂,春花似錦、人聲如沸胚鸯。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)姜钳。三九已至坦冠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間哥桥,已是汗流浹背辙浑。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留泰讽,地道東北人例衍。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像已卸,于是被迫代替她去往敵國(guó)和親佛玄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,110評(píng)論 25 707
  • 1.WebView屬性信息: 等webview屬性信息訪問(wèn)http://teachcourse.cn/androi...
    納蘭寒明閱讀 279評(píng)論 0 0
  • 目錄: Android系統(tǒng)架構(gòu)Android應(yīng)用開(kāi)發(fā)特色Project 介紹項(xiàng)目運(yùn)行過(guò)程剖析 res 中的資源如何...
    Ansaxnsy閱讀 532評(píng)論 0 1
  • 1. 一些必要的背景知識(shí) 目前使用的主流瀏覽器有五個(gè):Internet Explorer累澡、Firefox梦抢、Safa...
    饑人谷_劉二男閱讀 395評(píng)論 0 2
  • 我曾在哪見(jiàn)過(guò)你綠綠的芳草地一片潔白的羊群我曾在哪見(jiàn)過(guò)你藍(lán)藍(lán)的天空云卷云舒我曾在哪見(jiàn)過(guò)你頹圮的城墻草木生了三丈我曾在...
    孫思迪閱讀 145評(píng)論 0 0