導航:首頁 > 操作系統 > android判斷包的存在

android判斷包的存在

發布時間:2022-09-13 10:03:00

android 判斷某個應用是否正在運行

在手機安全中心或者手機管理中心可以看見後台管理,點擊進去就會看見;還有一種方法就是在手機設置中,應用程序中就可以看見。

查看正在運行軟體的方法:

  1. 打開手機設置。

  2. 在設置中找到應用選項,點擊應用。

  3. 應用里會看見應用程序,點擊進去。

  4. 看到個人應用、系統應用、正在運行三欄。

  5. 點擊正在運行就會看到所有正在運行的軟體了。

② android 判斷一個文件是否存在

sd卡目錄請不要直接使用/storage/sdcard0/,你這樣試試
String SDPATH = Environment.getExternalStorageDirectory().getPath() + "//";
File f = new File(SDPATH +"/Manual/test.pdf")
另外你是不是忘記加許可權了<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

③ Android Google map包是否存在判斷

首先在AndroidManifest.xml 添加設置android:required 為false使沒有google map 包的手機可以安裝應用 然後在使用地圖之前判斷:view sourceprint?1 try {2 Class.forName("com.google.android.maps.MapActivity");3 } catch (Exception e) {4 return;5 }

④ android代碼混淆以及怎麼判斷一個apk代碼是否被混淆過

方案一:
一、 下載dex2jar包,解壓
二、把apk包的後綴名改為.zip
三、把apk壓解壓拿到classes.dex文件,並放到dex2jar所在的目錄下
四、運行命令dex2jar.exe classes.dex
五、下載jd-gui
六、把jar包載入到jd.gui,查看源碼,源碼中的類名,方法名,變數名是否已經改變

方法二:
一、下載apktool工具
二、運行apktool.bat d xxx.apk,把apk反編譯成smali
三、如果想要進一步查看源碼,可下載smali2java
四、使用smali文件的文件名進行分析,如果存在1個或1個以上的資源類的smali文件,就可以證明該apk沒有被混淆過。

⑤ 怎麼打開第三方應用程序

需求場景:
在自己開發的應用程序里,有個跳轉到其他應用的按鈕,比如分享到「新浪微博」,當點擊這個按鈕時,先判斷手機中是否有安裝「新浪微博」這個程序,有則啟動「新浪微博」客戶端,否則從指定的URL地址進行下載。
簡言之,開啟其他應用,包名跳轉。
1、從一個應用跳轉到其他應用要獲取什麼信息?
need第三方應用的包名,以及下載鏈接。
2、如何判斷本機是否已經安裝了該第三方應用?
(1)首先得到該程序的包名;
別人的應用程序我怎麼知道他的包名和類名?
- 通過adb裡面看程序裝的所有應用
- 寫一個遍歷程序,獲取所有已安裝的程序,把包名列印出來,新浪微博的包名中應該會帶有sina字眼,如 com.sina.weibo
//獲取已經安裝apk列表
List<PackageInfo> packList = context.getPackageManager().getInstalledPackages(0);
//獲得包名PackageInfo.packageName

(2)然後通過PackageManager判斷是否存在該包的程序 。
android的每一個apk的activity的包的名字都是唯一的,所以可以通過判斷這個activity所在包的名字來判斷是不是該Apk已經安裝
例1:
//以twitter程序為例,假設twitter程序包名為「com.twitter.android」。這時候可用以下代碼來判斷是否被安裝。
//QQ客戶端的包名是"com.tencent.mobileqq"
PackageInfo packageInfo;//PackageInfo所在包為android.content.pm
try {
packageInfo = this.getPackageManager().getPackageInfo("com.twitter.android", 0);
} catch (NameNotFoundException e) {
packageInfo = null;
e.printStackTrace();
}
if(packageInfo ==null){
System.out.println("沒有安裝");
}else{
System.out.println("已經安裝");
}

例2:可以封裝到方法里,操作一樣,只是把包名作為參數傳入,返回值為布爾類型
private boolean isPkgInstalled(String pkgName) {
PackageInfo packageInfo = null;
try {
packageInfo = this.getPackageManager().getPackageInfo(pkgName, 0);
} catch (NameNotFoundException e) {
packageInfo = null;
e.printStackTrace();
}
if (packageInfo == null) {
return false;
} else {
return true;
}

3、怎麼跳轉?
通過隱式intent跳轉
例3:PackageManager中有getLaunchIntentForPackage這個方法!
//String pkg代表包名,String download代表下載url
final PackageManager pm = context.getPackageManager();
Intent intent = pm.getLaunchIntentForPackage(pkg);
if (null == intent) {//沒有獲取到intent
if (!TextUtils.isEmpty(downoad)) {//跳轉到下載第三方應用界面
context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(downoad)));
}
} else {
context.startActivity(intent);
}

例4:在我們自己的程序中調用其他程序時往往要檢查手機有沒有安裝該軟體後再做相應操作,如沒有安裝,用intent將用戶引導至android market去下載該程序,如已安裝則打開該程序,並傳入參數和調用其功能。
//下面介紹怎麼判斷手機已安裝某程序的方法:
private boolean isAvilible(Context context, String packageName){
final PackageManager packageManager = context.getPackageManager();//獲取packagemanager
List< packageInfo> pinfo = packageManager.getInstalledPackages(0);//獲取所有已安裝程序的包信息
List<String> pName = new ArrayList<String>();//用於存儲所有已安裝程序的包名
//從pinfo中將包名字逐一取出,壓入pName list中
if(pinfo != null){
for(int i = 0; i < pinfo.size(); i++){
String pn = pinfo.get(i).packageName;
pName.add(pn);
}
}
return pName.contains(packageName);//判斷pName中是否有目標程序的包名,有TRUE,沒有FALSE
}

//下面是調用該方法進行判斷後的邏輯:
//已安裝,打開程序,需傳入參數包名:"com.skype.android.verizon"
if(isAvilible(this, "com.skype.android.verizon")){
Intent i = new Intent();
ComponentName cn = new ComponentName("com.skype.android.verizon",
"com.skype.android.verizon.SkypeActivity");
i.setComponent(cn);
startActivityForResult(i, RESULT_OK);
}
//未安裝,跳轉至market下載該程序
else {
Uri uri = Uri.parse("market://details?id=com.skype.android.verizon");//id為包名
Intent it = new Intent(Intent.ACTION_VIEW, uri);
startActivity(it);
}

參考鏈接:http://www.eoeandroid.com/thread-152763-1-1.html?_dsign=2242c74c
4、跳轉後呢?
如何在android應用程序中啟動其他apk程序,被啟動程序退出後返回之前的程序?
//你只需要在A中打開B,並為B設置 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//不做對A的關閉處理finish() 這樣就可以了

Intent intent=new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setComponent(new ComponentName(objAppClassName, mainActivity));
context.startActivity(intent);

例5:原始跳轉方法,要包名和類名(通過ComponentName),後來可以只要包名…
Android 開發有時需要在一個應用中啟動另一個應用,比如Launcher載入所有的已安裝的程序的列表,當點擊圖標時可以啟動另一個應用。
一般我們知道了另一個應用的包名和MainActivity的名字之後便可以直接通過如下代碼來啟動:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
ComponentName cn = new ComponentName(packageName, className);
intent.setComponent(cn);
startActivity(intent);

但是更多的時候,我們一般都不知道應用程序的啟動Activity的類名,而只知道包名,我們可以通過ResolveInfo類來取得啟動Acitivty的類名。
下面是實現代碼:
private void openApp(String packageName) {
PackageInfo pi = getPackageManager().getPackageInfo(packageName, 0);

Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
resolveIntent.setPackage(pi.packageName);

List<ResolveInfo> apps = pm.queryIntentActivities(resolveIntent, 0);

ResolveInfo ri = apps.iterator().next();
if (ri != null ) {
String packageName = ri.activityInfo.packageName;
String className = ri.activityInfo.name;

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);

ComponentName cn = new ComponentName(packageName, className);

intent.setComponent(cn);
startActivity(intent);
}
}

⑥ 安卓手機的軟體安裝包存在哪裡哪些文件

如果手機沒有『我的文件』這個軟體,那麼你需要連接電腦下載豌豆莢,然後下載一個『文件管理『,之後下載的軟體就可以在裡面看見了。

⑦ android怎樣檢測包名是否存在

/**
* 判斷應用是否已經啟動
*
* @param context 一個context
* @param packageName 要判斷應用的包名
* @return boolean
*/
public static boolean isAppAlive(Context context, String packageName) {
ActivityManager activityManager =
(ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningAppProcessInfo> processInfos
= activityManager.getRunningAppProcesses();
List<ActivityManager.RunningTaskInfo> task_info = activityManager
.getRunningTasks(20);
String className = "";
for (int i = 0; i < task_info.size(); i++) {
if (packageName.equals(task_info.get(i).topActivity.getPackageName())) {
return true;
}
}

⑧ android怎麼判斷是否保存在本地存儲

  1. Android支持在SD卡上的應用私有目錄,在Froyo版本後,通過getExternalFilesDir()可以獲得具體路徑。該路徑依賴與應用的包名,如果你包為hello.file那麼SD開上的應用私有目錄為mntsdcardAndroiddatahello.filefiles.

  2. 在使用SD卡目錄時,需注意SD卡是否掛載,可通過Environment.getExternalStorageState()方法進行判斷,如果返回值為Envirnment.MEDIA_MOUNTED表示SD卡處於掛載狀態,可以放心使用。

⑨ android判斷一個線程是否存在

線程如果是一直運行的,就檢測service是否已經啟動,啟動了就不開啟線程。每次開啟程序就啟動服務,線程也新建,建議看一下service的生命周期。。

閱讀全文

與android判斷包的存在相關的資料

熱點內容
魔獸世界退休的伺服器有什麼用 瀏覽:180
安卓機游戲總是藍屏怎麼辦 瀏覽:701
工廠反編譯工具 瀏覽:177
日本蠟燭圖技術pdf下載 瀏覽:258
用友如何改伺服器地址 瀏覽:146
王牌戰爭的伺服器怎麼建 瀏覽:304
安裝windows和linux雙系統 瀏覽:448
命令方塊切換天氣 瀏覽:13
網路搭建pdf 瀏覽:657
js向php傳遞參數 瀏覽:170
一般壓縮測試速率多少 瀏覽:809
php分頁局部刷新 瀏覽:234
什麼是網盤加密 瀏覽:898
phpparsehtml 瀏覽:524
u盤拷貝文件自動加密 瀏覽:641
pdf縮略圖預覽 瀏覽:797
android小游戲項目 瀏覽:757
圖解詞典pdf 瀏覽:629
android釋放相機 瀏覽:483
上升趨勢25度角選股公式源碼 瀏覽:957