Android獲取所有應用的資源id和對應的uri

背景在某些應用中,為了實現應用apk資源放入重復利用,或者使用反射得到本應用的資源,需要使用反射方式獲得,但Resources類中也自帶了這種獲取方式,并且功能更加強大你可以獲取string,color,drawable,raw,xml等文件,因此也就意味著,這里可以獲取的資源是res中已定義的資源,對于控件id的獲取,暫時無法做到public int getIdentifier(String name, String defType, String defPackage) {if (name == null) {throw new NullPointerException("name is null");}try {return Integer.parseInt(name);} catch (Exception e) {// Ignore
    }return mAssets.getResourceIdentifier(name, defType, defPackage);
}獲取資源的Id獲取當前應用的資源Idint drawableId = mContext.getResources().getIdentifier("ic_launcher","drawable", mContext.getPackageName());
mImageView.setImageResource(drawableId);獲取其他應用的資源Idint id = mContext.getResources().getIdentifier("icon", "drawable", "com.android.testproject");
// 或者
int id = mContext.getResources().getIdentifier("com.android.testproject:drawable/icon", null, null);整合到一起public static int getResourceId(Context context, String name, String type, String packageName){Resources themeResources=null;PackageManager pm=context.getPackageManager();try {themeResources=pm.getResourcesForApplication(packageName);return themeResources.getIdentifier(name, type, packageName);} catch (NameNotFoundException e) {e.printStackTrace();}return 0;
}獲取系統資源Idint id = getResources().getIdentifier("actionbar_bg", "drawable","android");  //注意,最后一個參數必須是“android”

獲取資源的Uriandroid系統中,應用的資源存儲時也通常會被存入 數據庫,也可以被共享,
因此來說資源也可以獲得uripublic static  Uri getResourceUri(int resId,String packageName) {return Uri.parse("android.resource://"+packageName+"/"+resId);
}

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/450631.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450631.shtml
英文地址,請注明出處:http://en.pswp.cn/news/450631.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

nginx的腳本引擎(一)

nginx的腳本的語法和shell是很像的,我大致看了一下覺得挺有意思的,就想寫寫記錄一下。我沒看過shell腳本的引擎,不知道nginx腳本引擎和shell腳本引擎像不像,但是我覺得nginx的腳本引擎有點像C和匯編。 ngx_http_script_engine_t這…

一個待辦事列表todolist

最近有位老師讓我做的,圖片在下面,做了4個多小時,ui有的簡陋,可以再美化一下,這個會更好看,畢竟我也不是專業前端,測試網站http://todolist.sshouxin.top/使用的是thinkphp5.1的框架&#xff0c…

詳細說明 SourceTree 免登錄,跳過初始設置的方法(Windows 版 )

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 1. 首先,安裝完 SourceTree 以后先運行一次,彈出初始化登錄頁面后退出。 2. 進入這個文件夾:C:\Users…

什么是好的API設計?

摘要:有人言,API設計是編程工作中最難的事情。甚至有人認為至少要有10年的工作經驗才能接觸它。不過這里提出了一個引人思考的問題:究竟是構建什么樣的庫需要花費10年的時間去學習? 有人言,API設計是編程工作中最難的事…

Linux學習記錄-文件、目錄與磁盤

用戶和群組 用戶和群組主要是為了區分用戶對文件的操作權限。 賬號在/etc/passwd個人密碼在/etc/shadow組信息在/etc/group 不要亂動這3個文件文件權限和目錄配置 文件屬性 文件前綴解釋,例如: 第一個字符代表這個文件是『目錄、文件或鏈接文件等等』&am…

php curl模擬https請求

https請求(支持GET和POST) function http_request($url,$data null){$curl curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);if(!empty($data)){curl_setopt($cur…

springboot集成環信sdk報錯

import io.swagger.client.ApiException; import io.swagger.client.api.MessagesApi; import io.swagger.client.model.Msg 這個是因為少兩個包,只需要把在你的pom.xml添加以下代碼即可,不要忘記點贊哈只需要添加兩個包即可,你可以自行網上下…

解決 error: Your local changes to the following files would be overwritten by merge:XXXX

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 idea 上將本地代碼推送到 git后 , 報錯如下圖 error: Your local changes to the following files would be overwritten by merge:src/…

深度有趣 | 30 快速圖像風格遷移

簡介 使用TensorFlow實現快速圖像風格遷移(Fast Neural Style Transfer) 原理 在之前介紹的圖像風格遷移中,我們根據內容圖片和風格圖片優化輸入圖片,使得內容損失函數和風格損失函數盡可能小 和DeepDream一樣,屬于網絡…

轉型從思維習慣的轉變開始

摘要:首先建議大家不要輕易轉向管理崗位,要認清自己是否適合做管理。轉型過程中應把握好幾點:良好的技術基礎,它是贏得團隊信任的前提,是把握團隊整體方向的關鍵;培養大局觀,只有站得高才能看得…

數據庫小知識點(一直更新)

一、mysql查詢是否含有某字段: mysql數據庫查詢帶有某個字段的所有表名 SELECT * FROM information_schema.columns WHERE column_namecolumn_name; oracle數據庫查詢帶有某個字段的所有表名 select column_name,table_name,from user_tab_columns where column_n…

其他運算符

原文地址:https://wangdoc.com/javascript/ void運算符 void運算符的作用是執行一個表達式,然后不返回任何值,或者說返回undefined。 void 0 // undefined void(0) // undefined 上面是void運算符的兩種寫法,都正確。建議采用后一…

git pull --rebase 做了什么? 以及 Cannot rebase: You have unstaged changes 解決辦法

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 最近剛學 git rebase,覺得很牛逼的樣子, 結果今天就被打臉了。 git pull --rebase 1 報錯: Cann…

vue如何實現單頁緩存方案分析

實現全站的頁面緩存,前進刷新,返回走緩存,并且能記住上一頁的滾動位置,參考了很多技術實現,github上的導航組件實現的原理要么使用的keep-alive,要么參考了keep-alive的源碼,但是只用keep-alive…

C語言常用函數簡介

一、字符測試函數 isupper()測試字符是否為大寫英文字ispunct()測試字符是否為標點符號或特殊符號isspace()測試字符是否為空格字符isprint()測試字符是否為可打印字符islower()測試字符是否為小寫字母isgraphis()測試字符是否為可打印字符isdigit()測試字符是否為阿拉伯數字i…

thinkphp如何增加session的過期時間

原理:我們都知道session是建立在cookie的基礎上的,如果瀏覽器cookie清楚了,則tp就會重新建立一個session。 操作:直接增加瀏覽器的cookie的到期時間,就可以使tp的session增加。

需求心得

電路圖是人們為研究、工程規劃的需要。我們組項目需要設計實現一個矢量圖編輯器。在通過對變電站的電路圖進行矢量繪圖后,就可以通過矢量圖的縮放詳細信息。在分析需求后,寫下心得! 分析需求主要有一下幾個步驟: 1. 獲取和引導需求…

IT部門不應該是一個后勤部門

管理上最大的問題在于不重視預算與核算的管理。從管理層到員工,很少有經營的念頭,只是一味地埋頭做事。西方企業總結了當今幾百年的經營理念,最終把企業一切活動的評價都歸結到唯一的、可度量的標準上:錢來度量。 by——華為 作為…

you need to resolve your current index first 解決辦法

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 從一個分支A切換到另一個分支B后,對切換后的B分支進行pull操作,因為pull操作實際上包含了fetchmerge操作&#x…

C語言,一種如此美麗的語言

人們說足球是一種優美的體育運動,而當我們在綠茵場上看到羅納爾多那行云流水的帶球動作時,我們不能不承認這種說法。然而,對于我來說,這種運動之所以如此的賞心悅目,跟那些乖張的天才球星們關系并不是那么大&#xff0…