android使用获取所有应用的资源id和uri
2016-05-30 17:16
567 查看
一.获取资源的id
二.获取资源的uri
在某些应用中,为了实现应用apk资源放入重复利用,或者使用反射得到本应用的资源,需要使用反射反射方式获得,但Resources类中也自带了这种获取方式,并且功能更加强大
你可以获取string,color,drawable,raw,xml等文件,因此也就意味着,这里可以获取的资源是res中已定义的资源,对于控件id的获取,暂时无法做到
android.content.res.Resources.class
一.获取资源的id
1.如下,我们可以获取当前应用的资源id
2.我们也可以获取其他应用的资源id
对于这种方式,我们也可以这么做
3.进行封装一下
二.获取资源的uri
android系统中,应用的资源存储时也通常会被存入 数据库,也可以被共享,因此来说资源会获得应用的uri
我们也可以进一步封装
三.获取系统资源
二.获取资源的uri
在某些应用中,为了实现应用apk资源放入重复利用,或者使用反射得到本应用的资源,需要使用反射反射方式获得,但Resources类中也自带了这种获取方式,并且功能更加强大
你可以获取string,color,drawable,raw,xml等文件,因此也就意味着,这里可以获取的资源是res中已定义的资源,对于控件id的获取,暂时无法做到
android.content.res.Resources.class
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
1.如下,我们可以获取当前应用的资源id
int drawableId = mContext.getResources().getIdentifier("ic_launcher","drawable", mContext.getPackageName()); mImageView.setImageResource(drawableId);
2.我们也可以获取其他应用的资源id
Resources resources = context.getResources(); int indentify= getResources().getIdentifier("icon", "drawable", "org.anddev.android.testproject"); int resId = getResources().getIdentifier("background", "color", getPackageName()); startBtn.setTextColor(getResources().getColor(resId));
对于这种方式,我们也可以这么做
int indentify = getResources().getIdentifier(org.loveandroid.androidtest:drawable/icon",null,null);
3.进行封装一下
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; }
二.获取资源的uri
android系统中,应用的资源存储时也通常会被存入 数据库,也可以被共享,因此来说资源会获得应用的uri
Uri uri = Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.xinyueshenhua); Uri uri = Uri.parse("android.resource://"+getPackageName()+"/"+R.drawable.ic_launcher);
我们也可以进一步封装
public static Uri getResourceUri(int resId,String packageName) { return Uri.parse("android.resource://"+packageName+"/"+resId); }
三.获取系统资源
int indentify = getResources().getIdentifier("actionbar_bg", "drawable","android"); //注意,最后一个参数必须是“android”
相关文章推荐
- Context详解
- Android Service完全解析,关于服务你所需知道的一切(上)
- 关于ListView中多个EditText之间相互联动导致无限循环问题的解决方法
- Android启动优化,去除白屏或者黑屏
- 15 个 Android 通用流行框架大全
- Android的IPC机制(二)——AIDL实现原理简析
- 【Android Studio快捷键】之导入相应包声明(import packages)
- Android静默安装和静默卸载代码
- Android性能优化
- Android导航菜单横向左右滑动并和下方的控件实现联动
- Android获取手机位置代码实现
- Android 读取assets文件下的txt文件
- android开机启动代码
- android安装应用程序工具类
- android获取全部联系人方法
- android判断服务是否是运行状态
- 关于上传android studio代码到github
- Android中Intent的setData,setType和setDataAndType的区别
- Android SDK,ADT,以及API的理解
- Android调用OCR识别图像中的文字