packageInfo相關類應用

2021-08-31 12:55:03 字數 4188 閱讀 7695

instrumentationinfo、permissiongroupinfo、permissioninfo。它的間接子類有:activityinfo、providerinfo、serviceinfo。這個類

包含的資訊對於所有包中專案是平等的。這些package items是被package manager所持有的。這個類提供了屬性的非常普通的基本設定:

label、icon和meta-data。這個類的意圖不是被自己呼叫。它在這只是簡單地分享被package manager返回的所有items之間的普通定義。比

如,它自己並不實現parcelable介面,但卻幫助實現了parcelable的子類提供了方便的方法。

resolveinfo這個類是通過解析乙個與intentfilter相對應的intent得到的資訊。它部分地對應於從androidmanifest.xml的標籤收

集到的資訊。

packagemanager這個類是用來返回各種的關聯了當前已裝入裝置了的應用的包的資訊。你可以通過getpacagemanager來得到這個類。

1 通過packagemanager獲取手機已安裝apk檔案資訊:

packagemanager packagemanager = this.getpackagemanager();  

listpackageinfolist = packagemanager.getinstalledpackages(0);

通過以上方法,可以得到手機中安裝的所有應用程式,既包括了手動安裝的apk包的資訊,也包括了系統預裝的應用軟體的資訊,要區分這

兩類軟體可使用以下方法:

安裝的應用。

2 獲取、應用名、包名:

3 獲取支援分享的應用程式的集合:

/** 

* 查詢手機內所有支援分享的應用 

* @param context 

* @return 

*/  

intent intent=new intent(intent.action_send,null);    

intent.addcategory(intent.category_default);    

intent.settype("text/plain");    

packagemanager pmanager = context.getpackagemanager();  

}view plaincopy to clipboardprint?

packagemanager pmanager = messagesendactivity.this.getpackagemanager();  

/*********************查詢手機內所有支援分享的應用*********************/  

for(int i=0;iresolveinfo resolve = resolvelist.get(i);  

shareiteminfo shareitem = new shareiteminfo();  //自定義的類  

//set icon  

shareitem.seticon(resolve.loadicon(pmanager));  

shareitem.setlabel(resolve.loadlabel(pmanager).tostring());  

//set package name   

shareitem.setpackagename(resolve.activityinfo.packagename);        

}  4 應用程式使用許可權獲取方法:

packagemanager.getpackageinfo(packagename,packagemanager.get_permissions).requestedpermissions

5 呼叫系統程式設定介面

1) 2.3以上系統

uri uri = uri.fromparts(scheme, packagename, null);  

intent.setdata(uri);  

startactivity(intent);  

2) 2.2、2.1版本

intent i = new intent(intent.action_view);                  

startactivity(i); 

}  3) 通用的**如下:

private static final string scheme = "package";  

/** 

*/  

/** 

*/  

/** 

*/  

/** 

*/  

/** 

*  * @param context 

*  * @param packagename 

*            應用程式的包名 

*/  

intent intent = new intent();  

final int apilevel = build.version.sdk_int;  

if (apilevel >= 9)  

context.startactivity(intent);  

}  6 獲取未安裝的apk圖示

7 監聽android應用程式是否解除安裝成功

8 安裝apk

intent intent = new intent(intent.action_view); 

startactivity(intent); 

9  執行應用

首先android有乙個packagemanager,這玩意功能很強大,功能就和它的意思一樣

啟動**:

packagemanager pm;  

//初始化pm, 比如在activity裡可以packagemanager pm = getpackagemanager(); 

packageinfo pi = pm.getpackageinfo("包的名稱", packagemanager.get_activities);

//packageinfo  包含豐富的包的資訊,這個'包的名稱'是什麼,在androidmanifest.xml中有明確定義 

//  比如 package="***.yyy.portal.ui"

activityinfo ai=pi.activities[0];  // activityinfo 同樣道理 他是 activity的資訊

//這裡指向第乙個包中的activity, 大多數都是第乙個activity為啟動activity

if(ai==null) throw new exception(pkg+"不包含任何activity");

string sname=ai.name;  //這裡就得到activity的類名了

啟動它:

intent intent = new intent();

intent.setcomponent(new componentname(pkg,sname));

parent.startactivity(intent);

10  獲得第三方應用的包名

只要有包名,就可以啟動activity了,但是不知道名字怎麼辦?

如果應用沒有安裝自然啟動不了,只要安裝了就有辦法。

方法1 :

mybroadcastreceiver myreceiver = new mybroadcastreceiver();

intentfilter filter = new intentfilter(intent.action_package_install);

filter.addaction(intent.action_package_added);

filter.adddatascheme("package"); 

registerreceiver(myreceiver, filter);

監視安裝,在mybroadcastreceiver的onreceive函式裡

public void onreceive(context arg0, intent intent)

也可以使用 androidmanifest.xml配置來監視

方法2 : 

列舉所有安裝的應用,根據你自己的條件篩選

使用packagemanager的

public abstract listgetinstalledpackages (int flags) 可以獲得安裝應用的列表

BSONObj類函式addFields應用錯誤解決

根據需求,想在原有的bsonobj變數中增加乙個域,查詢到了函式該函式的解釋 如果沒有指定域,則新增域,返回域id 也得到了該函式的應用方法,但是總是出錯,查了好多網上的資料都沒有對該錯誤做出解釋,也沒有對該函式的正確用法與注意事項做出說明。所以只能找到曲線救國的方法 乙個已有的bsonobj變數p...

採集相關類

using system using system.data using system.configuration using system.net using system.io using system.text using system.collections.generic using sy...

執行緒相關類(ThreadLocal類)

threadlocal,是tread local varcable 執行緒區域性變數 的意思。執行緒區域性變數 threadlocal 的功能其實非常簡單,就是為每乙個使用該變數的執行緒都提供乙個變數值的副本 threadlocal是採用雜湊表的方式來為每個執行緒都提供乙個變數的副本 而不會和其它執...