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

動(dòng)態(tài)加載其他已經(jīng)安裝的apk的dex文件, 并通過(guò)反射執(zhí)行

2018-07-20    來(lái)源:open-open

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用
    private void useDexClassLoader(){  
                //創(chuàng)建一個(gè)意圖,用來(lái)找到指定的apk  
                Intent intent = new Intent("com.suchangli.android.plugin", null);  
                //獲得包管理器  
                PackageManager pm = getPackageManager();  
                List<ResolveInfo> resolveinfoes =  pm.queryIntentActivities(intent, 0);  
                //獲得指定的activity的信息  
                ActivityInfo actInfo = resolveinfoes.get(0).activityInfo;  
                  
                //獲得包名  
                String pacageName = actInfo.packageName;  
                //獲得apk的目錄或者jar的目錄  
                String apkPath = actInfo.applicationInfo.sourceDir;  
                //dex解壓后的目錄,注意,這個(gè)用宿主程序的目錄,android中只允許程序讀取寫自己  
                //目錄下的文件  
                String dexOutputDir = getApplicationInfo().dataDir;  
                  
                //native代碼的目錄  
                String libPath = actInfo.applicationInfo.nativeLibraryDir;  
                //創(chuàng)建類加載器,把dex加載到虛擬機(jī)中  
                DexClassLoader calssLoader = new DexClassLoader(apkPath, dexOutputDir, libPath,  
                                this.getClass().getClassLoader());  
                  
                //利用反射調(diào)用插件包內(nèi)的類的方法  
                  
                try {  
                            Class<?> clazz = calssLoader.loadClass(pacageName+".Plugin1");  
                              
                            Object obj = clazz.newInstance();  
                            Class[] param = new Class[2];  
                            param[0] = Integer.TYPE;  
                            param[1] = Integer.TYPE;  
                              
                            Method method = clazz.getMethod("function1", param);  
                              
                            Integer ret = (Integer)method.invoke(obj, 1,12);  
                              
                            Log.i("Host", "return result is " + ret);  
                              
                    } catch (ClassNotFoundException e) {  
                            e.printStackTrace();  
                    } catch (InstantiationException e) {  
                            e.printStackTrace();  
                    } catch (IllegalAccessException e) {  
                            e.printStackTrace();  
                    } catch (NoSuchMethodException e) {  
                            e.printStackTrace();  
                    } catch (IllegalArgumentException e) {  
                            e.printStackTrace();  
                    } catch (InvocationTargetException e) {  
                            e.printStackTrace();  
                    }  
        }  

標(biāo)簽: ssl 代碼

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

上一篇:OpenCV 獲取攝像頭圖像數(shù)據(jù)并顯示

下一篇:C++ 獲得系統(tǒng)時(shí)間