项目名android,【未解决】android项目中代码中如何获得对应的项目名

【背景】

希望在代码中输出log。

之前已经实现了log的功能:

但是默认输出的位置是

sd卡的根目录

导致:

程序运行多次后,在sd卡根目录下生成了太多的log文件,很乱。

希望:

修改log部分代码,使得生成的log文件,都只放在某个文件夹中。

该文件夹,此处打算用项目名称。

所以需要代码中获得项目名。

【折腾过程】

1.参考:

去试试:getResources().

结果由于不是context所以无法使用该函数。

2.参考:

但是没看到合适的。

3.参考:

都是获得app的名字,而不是此处的项目名。

4.期间,又遇到对应的:

【未解决】android中如何拼接路径

5.结果用:import com.xx.abcde.Start;

public class Start extends Application {

private static Start instance;

public static Start getInstance() {

return instance;

}

public static Context getContext(){

return instance;

// or return instance.getApplicationContext();

}

//...

}

String projectName = Start.getContext().getPackageName();

只能获得:

包的名字:com.xx.abcde

而不是我所希望的:

项目的名字:ABCDE

6.继续去改代码:String projectName = Start.getContext().getString(Start.getContext().getApplicationInfo().labelRes);

试试效果,结果得到的是app的名字,是中文。

不是我要的英文的项目名称。

7.先用代码:Context curContext = Start.getContext();

ApplicationInfo appInfo = curContext.getApplicationInfo();

String projectName = appInfo.className;

去调试看看,运行时的变量中信息都是哪些,看看能否找到我要的那个label。

结果在运行时中的ApplicationInfo中,没有找到我要的:

20530426da6984a797f5250d270abef7.png

算了,截止目前,还是没有完美的直接获得对应的app_name。

8.参考:

去试试,Context curContext = Start.getContext();

Resources appR = curContext.getResources();

CharSequence appNameCharSeq = appR.getText(appR.getIdentifier("app_name", "string", curContext.getPackageName()));

String projectName = appNameCharSeq.toString();

得到的结果,和之前String projectName = Start.getContext().getString(Start.getContext().getApplicationInfo().labelRes);

效果是一样的。。。

还是那个中文,是app的name。

而不是我要的英文。

9.参考:

去试试那个getApplicationLabelContext curContext = Start.getContext();

ApplicationInfo appInfo = curContext.getApplicationInfo();

PackageManager packageManager = curContext.getPackageManager();

Resources appR = curContext.getResources();

CharSequence appNameCharSeq = appR.getText(appR.getIdentifier("app_name", "string", curContext.getPackageName()));

String appLabel = packageManager.getApplicationLabel(appInfo).toString();

结果和上面一样:

得到的是中文的app的name。

10.下面的:Context curContext = Start.getContext();

ApplicationInfo appInfo = curContext.getApplicationInfo();

PackageManager packageManager = curContext.getPackageManager();

Resources appRes = curContext.getResources();

CharSequence appNameCharSeq = appRes.getText(appRes.getIdentifier("app_name", "string", curContext.getPackageName()));

String appLabel = packageManager.getApplicationLabel(appInfo).toString();

String appName = appRes.getString(R.string.app_name);

String projectName = appNameCharSeq.toString();

效果还是依旧得到那个中文的app的name。

10.截止目前:

android的项目的:

AndroidManifest.xml

中定义的:

android:name="com.xx.yy.Start"

android:label="@string/app_name"

android:name="com.xx.yy.activities.DeviceListActivity"

android:label="@string/app_name"

结果:

程序运行时,之前的代码,始终都只是:

要么是获得的是application的android:name的值;

要是获得的是activity的android:label的值,就没法获得:

application的android:label的值。

【总结】

算了,截止目前,还是没有获得对应的android的项目的AndroidManifest.xml中的application中所定义的那个android:label的值。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值