亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android中檢查、設置默認程序詳解

2020-04-11 11:41:09
字體:
來源:轉載
供稿:網友

Android作為一個偉大的系統,自然提供了設置默認打開程序的實現.在這篇文章中,我會介紹如何在Android系統中設置默認的程序. 在設置默認程序之前,無非有兩種情況,一種是已經有默認的程序,另一種則是沒有任何默認程序.

檢測是否有默認的程序

檢查是必須的,因為結果關乎著我們下一步該怎么做.

復制代碼 代碼如下:

public void testGetDefaultActivity() {
    PackageManager pm = mContext.getPackageManager();
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setData(Uri.parse("http://www.google.com"));
    ResolveInfo info = pm.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
    Log.i(VIEW_LOG_TAG, "getDefaultActivity info = " + info + ";pkgName = " + info.activityInfo.packageName);
}

其對應的日志輸出如下

復制代碼 代碼如下:

I/View    ( 1145 ): View getDefaultActivity info = ResolveInfo{410e4868 com.android.internal.app.ResolverActivity p=0 o=0 m=0x0};pkgName = android

如果沒有默認的程序,那么就會顯示出默認的就會顯示com.android.internal.app.ResolverActivity,那么這個ResolverActivity是什么呢,其實它就是一個選擇打開程序的對話框,其廬山真面目應該是這樣

如果我們設置了傲游瀏覽器作為我們的默認瀏覽器,那么默認的程序就應該顯示關于傲游瀏覽器相關的信息. 如下.

復制代碼 代碼如下:

I/View    ( 1145 ): View getDefaultActivity info = ResolveInfo{410ae1e8 com.mx.browser.MxBrowserActivity p=0 o=0 m=0x208000};pkgName = com.mx.browser

那么如何判斷是否設置了默認的程序呢,上面的方法默認的ResolveInfo,如果info.activityInfo.packageName為android,則沒有設置,否則,有默認的程序.

復制代碼 代碼如下:

public final boolean hasPreferredApplication(final Context context, final Intent intent) {
    PackageManager pm = context.getPackageManager();
    ResolveInfo info = pm.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
    return !"android".equals(info.activityInfo.packageName);
}

如果有默認程序

我們需要做的是將現在的默認的程序的默認設置清除.

我們能通過代碼直接將默認設置改寫成我們的么,實際上是不行的,因為權限的問題. 原因是這樣的Android因為基于Linux 內核,Linux有著很棒的用戶概念,而Android中每個應用就是一個在Linux內核中的用戶.兩個級別相同的用戶無法刪除對方.

所以,我們只能交給用戶手動做.當然這也是絕大多數程序的做法.你需要做的就是將使用者帶到程序詳情頁,通過這段代碼可以跳轉到應用詳情頁.

復制代碼 代碼如下:

public void testStartAppDetails() {
    //Use the destination package name
    Intent intent = new Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS, Uri.parse("package:com.mx.browser"));
    getActivity().startActivity(intent);
}

當跳轉到已安裝的應用詳情頁之后,你應該提示用處點擊Clear Default 按鈕.


如果用戶從安裝詳情頁回到你的程序,你需要檢測是不是用戶清理了默認的程序設置,判斷依據還是是否有默認的程序設置,如果還有默認的,繼續提示需要手動清理其他已設置的程序,直到用戶徹底清理完成之后,然后按照下面的沒有默認設置程序的情況處理.

注意,存在多次清理的情況,如設置瀏覽器,先清理了UC默認設置后,可能還需要清理海豚瀏覽器的情況.

沒有默認的程序.

如果沒有默認的程序,我們就需要設置我們希望的程序作為默認,但是,這頁不能在代碼中實現,還是需要人為的交互選擇才可以.你需要做的就是使用類似如下代碼,然后彈出一個提示,告訴用戶選擇你的程序作為默認的程序.至于提示語你可以充分發揮你的想象力.

復制代碼 代碼如下:

public void testStartChooseDialog() {
    Intent intent = new Intent();
    intent.setAction("android.intent.action.VIEW");
    intent.addCategory("android.intent.category.BROWSABLE");
    intent.setData(Uri.parse("http://VeVB.COm"));
    intent.setComponent(new ComponentName("android","com.android.internal.app.ResolverActivity"));
    getActivity().startActivity(intent);
}

取消自己的默認程序設置

復制代碼 代碼如下:

public void testClearDefault() {
    PackageManager pm = mContext.getPackageManager();
    pm.clearPackagePreferredActivities(mContext.getPackageName());
}

上述方法只能清理自己的默認設置

更近一步

實際上關于默認設置的配置文件存放在/data/system/packages.xml

復制代碼 代碼如下:

<preferred-activities>
<item name="com.mx.browser/.MxBrowserActivity" match="200000" set="2">
<set name="com.android.browser/.BrowserActivity" />
<set name="com.mx.browser/.MxBrowserActivity" />
<filter>
<action name="android.intent.action.VIEW" />
<cat name="android.intent.category.BROWSABLE" />
<cat name="android.intent.category.DEFAULT" />
<scheme name="http" />
</filter>
</item>
</preferred-activities>

One More Thing

提問:當一個程序程序安裝或卸載,系統會做什么

回答:當一個程序安裝或者卸載,以瀏覽器為例子,如果你安裝了一個傲游瀏覽器或者卸載了一個UC瀏覽器,當你從外部程序打開一個鏈接時,系統不會使用之前的默認程序打開,而是彈出一個選擇對話框供你選擇.

提問:什么時候系統會彈出選擇打開程序列表

回答:經本人測試,實際是這樣的,當有一個Intent過來的時候,系統會動態地收集能處理的Activity,然后從/data/system/packages.xml 讀取進行比較,如果兩者不同,則彈出選擇對話框.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品mp4| 国产精品高清免费在线观看| 久久在线免费视频| 欧美激情亚洲激情| 欧美精品videossex性护士| 欧美日韩在线视频一区二区| 亚洲free性xxxx护士hd| 久久91精品国产91久久跳| 日韩欧美综合在线视频| 伦伦影院午夜日韩欧美限制| 精品国产成人在线| 成人国产亚洲精品a区天堂华泰| 国产a∨精品一区二区三区不卡| 92福利视频午夜1000合集在线观看| 日韩国产精品视频| 成人精品一区二区三区电影黑人| 久久久国产一区二区三区| 国产亚洲一区精品| 中文字幕亚洲欧美日韩2019| 在线视频日本亚洲性| 国产精品国产自产拍高清av水多| 欧美怡红院视频一区二区三区| 亚洲国产精品悠悠久久琪琪| 成人观看高清在线观看免费| 国产精品中文久久久久久久| 在线观看欧美日韩| 韩国日本不卡在线| 欧美在线视频免费播放| 欧美日韩国产精品一区二区不卡中文| 66m—66摸成人免费视频| 97在线观看免费高清| 久热精品视频在线观看一区| 久久久视频精品| 91精品国产91久久久久久久久| 91久久久精品| 国产一区二区三区久久精品| 中文字幕在线亚洲| 韩国v欧美v日本v亚洲| 亚洲色图18p| 91tv亚洲精品香蕉国产一区7ujn| 亚洲aaa激情| 69久久夜色精品国产7777| 亚洲乱码av中文一区二区| 亚洲在线免费看| 不卡中文字幕av| 日韩欧美国产视频| 日韩电影免费观看在线| 91国产视频在线| 91精品国产自产在线老师啪| 久久亚洲精品国产亚洲老地址| 国产成人av在线| 成人免费视频a| 91精品国产91久久久久久久久| 国产一区二区三区在线播放免费观看| 欧美日韩中文字幕在线视频| 成人黄色av网| 欧美激情久久久久| 亚洲国产美女精品久久久久∴| 亚洲天堂久久av| 日本一区二区三区四区视频| 国产成人精品一区二区三区| 亚洲精品黄网在线观看| yw.139尤物在线精品视频| 国产成人av在线播放| 精品国偷自产在线视频99| 亚洲天堂影视av| 国产97在线视频| 久久久国产精品视频| 欧美精品一本久久男人的天堂| 国产精品久久久久久久久久99| 久久精品国产亚洲一区二区| 日韩美女免费观看| 在线观看欧美日韩| 亚洲第一网站男人都懂| 亚洲天堂av图片| 夜夜嗨av色综合久久久综合网| 日韩在线视频二区| 欧美日韩免费在线| 欧美精品第一页在线播放| 亚洲精品第一页| 亚洲国产欧美一区二区三区同亚洲| 成人黄色片在线| 久久久久久久亚洲精品| 韩国国内大量揄拍精品视频| 亚洲精品一二区| 欧美午夜片欧美片在线观看| 黄色精品一区二区| 丝袜美腿精品国产二区| 欧美一区二粉嫩精品国产一线天| 精品国产91久久久| 欧美性xxxx极品高清hd直播| 亚洲国内精品在线| 国产成人精品日本亚洲专区61| 欧美三级欧美成人高清www| 亚洲一区二区自拍| 日韩国产精品亚洲а∨天堂免| 亚洲第一黄色网| 国产精品视频永久免费播放| 久久久久久久久久久人体| www.亚洲天堂| 亚洲成人亚洲激情| 亚洲欧美在线一区二区| 成人综合网网址| 日韩av电影院| 国产精品吹潮在线观看| 精品久久久久人成| 日本一区二区在线免费播放| 亚洲综合视频1区| 国产精品视频在线播放| 精品久久久久久中文字幕一区奶水| 久久亚洲精品中文字幕冲田杏梨| 国产a∨精品一区二区三区不卡| 91在线直播亚洲| 亚洲va欧美va国产综合剧情| 欧美大片免费观看| 国产午夜精品一区二区三区| 国产精品视频公开费视频| 欧美黑人性猛交| 岛国视频午夜一区免费在线观看| 精品在线欧美视频| 久久天天躁狠狠躁老女人| 2020久久国产精品| 国产精品视频地址| 亚洲成人av在线| 亚洲成人久久久| 亚洲国产精品va| 欧美成人sm免费视频| 国内精品视频久久| 日韩av片永久免费网站| 57pao成人国产永久免费| 国产精品极品美女粉嫩高清在线| 超碰91人人草人人干| 夜夜嗨av一区二区三区免费区| 精品久久久久久中文字幕一区奶水| 日韩精品有码在线观看| 久久乐国产精品| 久久av在线看| 国产香蕉一区二区三区在线视频| 亚洲精品美女在线观看| 久久国产精品影视| 欧美黑人又粗大| 久久免费高清视频| 国产精品久久久久久久久影视| 91精品美女在线| 国产视频精品va久久久久久| 欧美性猛交xxxx乱大交极品| 亚洲欧美国产一区二区三区| 视频在线一区二区| 亚洲人在线视频| 久热精品视频在线| 久久亚洲精品国产亚洲老地址| 国产精品高清网站| 91亚洲精品久久久久久久久久久久| 欧美黄色成人网| 少妇高潮久久77777| 欧美日韩免费在线| 色综合久久久久久中文网| 日韩美女福利视频| 国产成人avxxxxx在线看| 亚洲精品小视频在线观看| 久久天天躁狠狠躁夜夜躁| 欧美一级高清免费播放| 久久99精品视频一区97| 欧美日韩成人在线播放|