當前位置:首頁 » 安卓系統 » android獲取系統應用

android獲取系統應用

發布時間: 2022-08-26 15:50:27

1. 如何在一個android應用裡面調用一個系統的應用程序呢

//調用系統照相機
public void cameraInfo(){
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
//照片保存的路徑及保存的名稱
intent.putExtra(MediaStore.EXTRA_OUTPUT,
Uri.fromFile(new File("/sdcard/JetMobileDev/camera.jpg"));
startActivityForResult(intent, 1);
}

2. 通過PHP怎樣取到android系統下apk應用的包名,版本號等信息

應用場景:1、在界面中顯示應用程序的版本號;2、用戶啟動該應用,後台判斷該應用是否是最新版本。上述情景都需要在程序中自動獲取到應用的版本號。思路簡介:在Android中,應用程序的版本號是在AndroidManifest.xml文件中進行配置的

3. 安卓手機如何把下載的軟體裝到系統里(變成系統固定軟體)。

1、首先解鎖手機,然後在手機桌面中找到並打開【手機管家】軟體。

4. Android 怎麼獲取所有正在運行的應用程序

在framework中想添加這個功能,所以寫了個appliction來實現一下獲取正在運行的應用程序: 還是先看圖吧: 這個app主要是簡單的實現了獲取非系統的應用程序和一些常用的系統應用程序,顯示在一個listview中,並添加了點擊(回復到你打開的界面)和長按事件(關閉應用程序)。 看看代碼吧: 直接貼出來再加上注釋吧(直接寫在一個文件里): package andorid/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <ImageView android:id="@+id/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:layout_width="40dip" android:layout_height="40dip" /> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textStyle="bold" /> <TextView android:id="@+id/info" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout> main: <?xml version="1/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ListView android:id="@+id/list_view" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical" ></ListView> </LinearLayout> 在manifest文件中要加以個許可權: <uses-permission android:name="android.permission.RESTART_PACKAGES" /> 主要是前面的am.killBackgroundProcesses(packageName);方法要這個許可權。

5. android用什麼方法獲取本地軟體跟系統軟體

在電腦上安裝一個手機助手安卓版就可以了

6. Android應用程序怎樣獲取讀取系統文件的許可權

1、必須是Android系統開發人員,否則你無法修改init.rc等文件。 2、你的應用程序必須要獲得system許可權。
在應用層 你要想用代碼獲得系統文件許可權,除非你手機root了
要麼你自己坐rom。。。。 自己修改 init,rc
具體可以參考這篇博文:http://blog.sina.com.cn/s/blog_5f35912f0100w4ld.html

7. 如何獲取android 進程信息

1.獲取系統的可用內存和總內存。

獲取系統內存中應用的信息,需要用到ActivityManager這個類,然而當你用這個類拿數據的時候你會發現,拿到的數據不正確。用這個類的API獲取系統的總內存和可用內存會出現數據不正確的情況。除了這個類,Android手機中有文件描述了這些信息——/proc/meminfo。meminfo文件中詳細的記錄了安卓手機的一些數據,包括可用內存和總內存。附上代碼:
public static long getTotalMemSize() {
long size=0;
File file = new File("/proc/meminfo");
try {
BufferedReader buffer = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
String memInfo = buffer.readLine();
int startIndex = memInfo.indexOf(":");
int endIndex = memInfo.indexOf("k");
memInfo = memInfo.substring(startIndex + 1, endIndex).trim();
size = Long.parseLong(memInfo);
size *= 1024;
buffer.close();
} catch (java.io.IOException e) {
e.printStackTrace();
}
return size;
}

public static long getAviableMemSize() {
long size=0;
File file = new File("/proc/meminfo");
try {
BufferedReader buffer = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
String memInfos=new String();
int i=0;
while ((memInfos=buffer.readLine())!=null){
i++;
if (i==2){
memInfo = memInfos;
}

}
int startIndex = memInfo.indexOf(":");
int endIndex = memInfo.indexOf("k");
memInfo = memInfo.substring(startIndex + 1, endIndex).trim();
size = Long.parseLong(memInfo);
size *= 1024;
buffer.close();
} catch (java.io.IOException e) {
e.printStackTrace();
}

return size;
}

操作很簡單分別是讀取第一行的數據和第二行的數據,將字元串分去出,將所得值乘以1024變為byte類型。

2.獲取內存中運行應用的信息

首先,自然要有一個Bean文件用於存儲這些信息,之後通過ActivityManager的getRunningAppProcesses()方法得到一個RunningAppProcessInfo的List。便利這個List去除我們想要的數據,存在我們的Bean文件夾中。
public static List<TaskBean> getAllTask() {
List<TaskBean>taskList=new ArrayList<>();
List<ActivityManager.RunningAppProcessInfo>runList=UIUtils.getActManager().getRunningAppProcesses();
try {
for (ActivityManager.RunningAppProcessInfo r:runList) {
TaskBean taskBean = new TaskBean();
String processName = r.processName;
taskBean.setPackageName(processName);
PackageInfo packageInfo = UIUtils.getPacManager().getPackageInfo(processName, 0);
taskBean.setIcon(packageInfo.applicationInfo.loadIcon(UIUtils.getPacManager()));
taskBean.setName(packageInfo.applicationInfo.loadLabel(UIUtils.getPacManager()).toString());
Debug.MemoryInfo[] processInfo=UIUtils.getActManager().getProcessMemoryInfo(new int[]{r.pid});
taskBean.setMemSize(processInfo[0].getTotalPrivateDirty()*1024);
if ((packageInfo.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM)!=0){
taskBean.setSystem(true);
}else {
taskBean.setUser(true);
}
if (taskList != null) {
taskList.add(taskBean);
for (int i=0;i<taskList.size();i++) {
if (taskList.get(i).getPackageName().equals(Constants.PACKAGE_INFO)){
taskList.remove(i);
}
}
}
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}

return taskList;
}

好了,大功告成。當你開開心心的拿到手機上調試的時候你會發現,一個數據都沒有。原來,在Android5.0之後,谷歌處於完全考慮已經棄用了通過如上方法拿到進程中的信息。那麼又應該怎麼做呢?
public static List<TaskBean> getTaskInfos() {
List<AndroidAppProcess> processInfos = ProcessManager.getRunningAppProcesses();

List<TaskBean> taskinfos = new ArrayList<TaskBean>();
// 遍歷運行的程序,並且獲取其中的信息
for (AndroidAppProcess processInfo : processInfos) {
TaskBean taskinfo = new TaskBean();
// 應用程序的包名
String packname = processInfo.name;
taskinfo.setPackageName(packname);
// 湖區應用程序的內存 信息
android.os.Debug.MemoryInfo[] memoryInfos = UIUtils.getActManager()
.getProcessMemoryInfo(new int[] { processInfo.pid });
long memsize = memoryInfos[0].getTotalPrivateDirty() * 1024L;
taskinfo.setMemSize(memsize);
taskinfo.setPackageName(processInfo.getPackageName());
try {
// 獲取應用程序信息
ApplicationInfo applicationInfo = UIUtils.getPacManager().getApplicationInfo(
packname, 0);
Drawable icon = applicationInfo.loadIcon(UIUtils.getPacManager());
taskinfo.setIcon(icon);
String name = applicationInfo.loadLabel(UIUtils.getPacManager()).toString();
taskinfo.setName(name);

if ((applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) {
// 用戶進程
taskinfo.setUser(true);
} else {
// 系統進程
taskinfo.setSystem(true);
}
} catch (PackageManager.NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
// 系統內核進程 沒有名稱
taskinfo.setName(packname);
Drawable icon = UIUtils.getContext().getResources().getDrawable(
R.drawable.ic_launcher);
taskinfo.setIcon(icon);
}
if (taskinfo != null) {
taskinfos.add(taskinfo);
for (int i=0;i<taskinfos.size();i++) {
if (taskinfos.get(i).getPackageName().equals(Constants.PACKAGE_INFO)){
taskinfos.remove(i);
}
}
}
}
return taskinfos;
}

好了,接下來只需要判斷安裝的版本就可以了:
int sysVersion = Integer.parseInt(Build.VERSION.SDK);
taskList = sysVersion > 21 ? TaskManagerEngine.getTaskInfos() : TaskManagerEngine.getAllTask();

好了,大功告成。數據就能正常拿到了。

8. 如何獲得Android系統自帶的應用程序的包名

下載一個叫「Link2sd」的應用程序,安裝後即可看到手機內應用的包名了,望能採納謝謝!

9. android應用怎麼獲取系統許可權

在 android 的API中有提供
SystemClock.setCurrentTimeMillis()函數來修改系統時間,可惜無論你怎麼調用這個函數都是沒用的,無論模擬器還是真
機,在logcat中總會得到"Unable to open alarm driver: Permission denied
".這個函數需要root許可權或者運行與系統進程中才可以用。

本來以為就沒有辦法在應用程序這一層改系統時間了,後來在網上搜了好久,知道這個目的還是可以達到的。
第一個方法簡單點,不過需要在Android系統源碼的環境下用make來編譯
1. 在應用程序的AndroidManifest.xml中的manifest節點中加入android:sharedUserId="android.uid.system"這個屬性。
2. 修改Android.mk文件,加入LOCAL_CERTIFICATE := platform這一行
3. 使用mm命令來編譯,生成的apk就有修改系統時間的許可權了。

第二個方法麻煩點,不過不用開虛擬機跑到源碼環境下用make來編譯:
1. 同上,加入android:sharedUserId="android.uid.system"這個屬性。
2. 使用eclipse編譯出apk文件,但是這個apk文件是不能用的。
3. 用壓縮軟體打開apk文件,刪掉META-INF目錄下的CERT.SF和CERT.RSA兩個文件。
4.
使用目標系統的platform密鑰來重新給apk文件簽名。這步比較麻煩,首先找到密鑰文件,在我的Android源碼目錄中的位置
是"build\target\proct\security",下面的platform.pk8和platform.x509.pem兩個文件。然
後用Android提供的Signapk工具來簽名,signapk的源代碼是在"build\tools\signapk"下,用法為"signapk
platform.x509.pem platform.pk8 input.apk
output.apk",文件名最好使用絕對路徑防止找不到,也可以修改源代碼直接使用。
這樣最後得到的apk和第一個方法是一樣的。

10. Android獲取到手機應用圖標並顯示在GridView中。現在想通過點擊相應圖標進入對應應用程序,應該怎麼樣實現

這個很簡單,給你主要代碼
PackageManager pm = getPackageManager(); // 得到PackageManager對象
// List<ApplicationInfo> packs = pm.getInstalledApplications(0); //
// 得到系統安裝的所有程序包的PackageInfo對象
List<PackageInfo> packs = pm.getInstalledPackages(0); // 得到用戶安裝的所有程序包的PackageInfo對象
for (PackageInfo pi : packs) {
map = new HashMap<String, Object>();
// 顯示用戶安裝的應用程序,而不顯示系統程序
if ((pi.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0
&& (pi.applicationInfo.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) == 0) {
// 這將會顯示所有安裝的應用程序,不包括系統應用程序
/**
* 獲得文件大小 publicSourceDir獲得路徑,再通過該路徑創建一個文件new File(String dir),
* 得到該文件長度除以1024則取得該應用的大小。
* 取得程序大小,通過application的publicSourceDir獲得。
* 取得程序時間,通過application的SourceDir獲得。
*/
String dir = pi.applicationInfo.publicSourceDir;
int size = Integer.valueOf((int) new File(dir).length());
long date = new Date(new File(dir).lastModified()).getTime();
map.put("appName", pi.applicationInfo.loadLabel(pm));// 應用程序名稱
map.put("icon", pi.applicationInfo.loadIcon(pm));// 圖標
map.put("versionName", "版本 :" + pi.versionName);// 應用程序版本\
map.put("appSize2", size);// 應用程序大小
map.put("packages", pi.applicationInfo.packageName); // 應用程序包名
map.put("appSize", "大小 :" + ToSzie(size));// 應用程序大小
map.put("appDate", date);// 應用程序時間
items.add(map);
}
}

啟動 :

String path ="package:"+v.getTag();
Uri packageURI = Uri.parse(path);
Intent uninstallIntent = new Intent(this packageURI);
context.startActivity(uninstallIntent);

熱點內容
inflateandroid 發布:2025-01-13 19:47:43 瀏覽:244
安卓電腦如何連手機熱點 發布:2025-01-13 19:40:52 瀏覽:142
pythonnumexpr 發布:2025-01-13 19:34:56 瀏覽:489
linuxpython版本查看 發布:2025-01-13 19:18:37 瀏覽:741
寶馬三系的哪個配置走量 發布:2025-01-13 19:12:14 瀏覽:697
區域網如何訪問伺服器 發布:2025-01-13 18:56:24 瀏覽:191
javaarraylist訪問 發布:2025-01-13 18:56:10 瀏覽:671
如何確定膠體是否配置成功 發布:2025-01-13 18:46:07 瀏覽:73
fgo緩存多大 發布:2025-01-13 18:42:13 瀏覽:972
能緩解壓力的水果 發布:2025-01-13 18:15:36 瀏覽:393