中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

獲取android手機中已安裝應用信息以及應用安裝和卸載代碼集合

2018-07-20    來源:open-open

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

很多APP都有推薦應用列表,但是我發(fā)現(xiàn)大量的app里的應用推薦沒有顯示本機是否已經(jīng)安裝了應用,

只要點擊都會直接下載推薦的應用;

當然他們這么做顯然是想換量來推廣,但是這樣用戶體驗就不好了,

本來用戶手機上已經(jīng)安裝了該應用,正常情況下推薦應用列表那里應該顯示已安裝!

(隨便選了一個應用如下圖都是不顯示用戶是否已經(jīng)安裝)

那我們要做這種功能,就需要判斷已安裝應用和應用的已下載未安裝,等等一些方法!

/** 
     * 是否已經(jīng)安裝該應用 
     * @param context 
     * @param apk_package 包名 
     * @return 
     */  
    public static boolean isInstallApp(Context context, String apk_package) {  
        PackageInfo packageInfo;  
        try {  
            packageInfo = context.getPackageManager().getPackageInfo(  
                    apk_package, 0);  
        } catch (NameNotFoundException e) {  
            packageInfo = null;  
            e.printStackTrace();  
        }  
        if(packageInfo !=null ){  
                return true;  
        }  
        return false;  
    }  
      
    /** 
     * 遍歷一個路徑下的文件夾內(nèi)的指定文件 
     * @param Path 搜索目錄 
     * @param Extension 擴展名(判斷的文件類型的后綴名) 
     * @param IsIterative  是否進入子文件夾   
     * @return 
     */  
    public static final List<String> GetFiles(String Path, String Extension,boolean IsIterative)  {    
        List<String> apklist = new ArrayList<String>(); // 結(jié)果 List     
        try {  
            File[] files = new File(Path).listFiles();    
            for (int i = 0; i < files.length; i++) {    
                File f = files[i];    
                if (f.isFile()) {    
                    if (f.getPath() .substring(f.getPath().length() - Extension.length()) .equals(Extension)) // 判斷擴展名     
                        apklist.add(f.getPath());    
                    if (!IsIterative)    
                        break;  //如果不進入子集目錄則跳出     
                } else if (f.isDirectory() && f.getPath().indexOf("/.") == -1) // 忽略點文件(隱藏文件/文件夾)     
                    GetFiles(f.getPath(), Extension, IsIterative);  //這里就開始遞歸了     
            }    
        } catch (Exception e) {  
            // TODO: handle exception  
            e.printStackTrace();  
        }  
        return apklist;    
    }   
      
    /** 
     * 根據(jù)本地路徑安裝apk 
     * @param apk_url 
     */  
    public static void installApkFromLocalPath(Context context,String apk_url){   
        try {  
            Intent intent = new Intent(Intent.ACTION_VIEW);   
            intent.setDataAndType(Uri.fromFile(new File(apk_url)), "application/vnd.android.package-archive");   
            context.startActivity(intent);   
        } catch (Exception e) {  
            // TODO: handle exception  
            e.printStackTrace();  
        }  
    }   
    /** 
     * 卸載應用 
     * @param context 
     * @param apk_pkg 包名 
     */  
    public static void unInstallApkFromPackage(Context context,String apk_pkg){   
        try {  
            Intent intent = new Intent(Intent.ACTION_DELETE);   
            intent.setData(Uri.parse("package:"+apk_pkg));  
            context.startActivity(intent);   
        } catch (Exception e) {  
            // TODO: handle exception  
            e.printStackTrace();  
        }  
    }   
    /** 
     * 根據(jù)包名打開另外一個應用 
     * @param context 
     * @param apk_pkg 包名 
     */  
    public static void openApkFromPackage(Context context,String apk_pkg){   
        try {  
            Intent intent = new Intent(Intent.ACTION_VIEW);     
            intent.setComponent(new ComponentName(context, apk_pkg));     
            context.startActivity(intent);    
        } catch (Exception e) {  
            // TODO: handle exception  
            e.printStackTrace();  
        }  
    }   

標簽: 搜索 推廣

版權(quán)申明:本站文章部分自網(wǎng)絡,如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:Android橫屏設置代碼

下一篇:Java連接MongoDB代碼示例