Android开发中如何定义和使用数组
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android开发中如何定义和使用数组相关的知识,希望对你有一定的参考价值。
参考技术A 由于android对于APN的网络API没有公开,不过我们可以阅读源代码,然后进行数据库操作,系统会自动监听数据库的变化,从而实现开启或者关闭APN。
大家可以研究一下frameworks/base/core/java/android/provider
/Telephony.java这个类,
比较重要的就是 URI 和数据库字段: content://telephony/carriers
字段可以在Telephony.java中找到。
其实原理很简单 :
1 、 当开启APN的时候,设置一个正确的移动或者联通的APN
2、 关闭的时候设置一个错误APN就会自动关闭网络 !
如何在 Gradle 构建脚本(Android)中定义和使用常量?
【中文标题】如何在 Gradle 构建脚本(Android)中定义和使用常量?【英文标题】:How to define and use a constant in Gradle build script (Android)? 【发布时间】:2016-01-25 14:54:50 【问题描述】:我正在开发一个使用 Gradle 作为构建系统的 Android 应用程序。
我的目标是使用一个值(包名)作为applicationId
:
productFlavors
orange
applicationId "com.fruits.android.orange"
// ...
还可以通过BuildConfig
公开它,以便Java 代码可以访问它。
这种访问必须来自风味之外(即免费版本的应用需要知道付费版本的包名,以便它可以提示用户在 Play 商店中进行升级)。
所以我想做这样的事情:
productFlavors
orange
applicationId orangeProPackage
// ...
buildConfigField 'String', 'ORANGE_PRO_PACKAGE', "$orangeProPackage" // ?
只有我不确定如何定义orangeProPackage
,以便它在整个 build.gradle 中可见并且不会破坏脚本。
由于有几种不同的风格,如果我能以某种方式将所有这些常量像这样分组(我猜?):
def proPackages = [
orange: "..."
apple: "..."
banana: "..."
]
然后以简洁和描述性的方式引用它们,例如 proPackages.orange
等。
问题是,如何做到这一点?
这不是Is it possible to declare a variable in Gradle usable in Java?的重复项
我已经看到了这个问题(以及其他一些问题)。我知道如何声明 buildConfigFields,我已经有很多了。我的问题是关于重用与buildConfigField
相同的值和applicationId
。
【问题讨论】:
Is it possible to declare a variable in Gradle usable in Java?的可能重复 @Maloubobola 它不是重复的。我已经看到了这个问题(以及其他一些问题)。我知道如何声明 buildConfigFields,我已经有很多了。我的问题是关于 reusing 与buildConfigField
和 applicationId
相同的值。
【参考方案1】:
只有我不确定如何定义 orangeProPackage 以便它在整个 build.gradle 中可见并且不会破坏脚本。
您可以将其放在项目根目录中的gradle.properties
中。与其他 .properties
文件一样,它只是一个键值存储:
ORANGE_PRO_PACKAGE=com.morawski.awesomeapp
然后,您在 build.gradle
中将其称为简单的全局字符串变量 (ORANGE_PRO_PACKAGE
):
buildConfigField 'String', 'ORANGE_PRO_PACKAGE', '"' + ORANGE_PRO_PACKAGE + '"'
如果我能以某种方式对所有这些常量进行分组,那将是最好的
任何涉及.properties
文件的内容都无法处理。在那里,您可能正在查看在*** build.gradle
文件中使用纯 Groovy 代码或其他方式定义全局变量。
【讨论】:
实际上它应该是buildConfigField 'String', 'ORANGE_PRO_PACKAGE', '"' + ORANGE_PRO_PACKAGE + '"'
,否则该值不会在 BuildConfig 中生成为字符串文字并且构建中断。但除此之外 - 它有效,感谢您的提示。
是否可以为每种口味使用不同的.properties
文件?一个优点是,这种方式可以在不同风味中保留相同的键(在 gradle.properties 中)。由于文件会更改,因此基于风味,这些键的值会有所不同。如果将相同的gradle.properties
文件用于值根据风味而变化的字符串,我们将需要在相同的.properties
文件中具有不同的键,随着时间的推移,这些键更难维护。
@ShobhitPuri:“是否可以为每种口味使用不同的 .properties 文件?” - AFAIK 没有什么是自动的。但 Gradle 是 Groovy,因此您可以从开发机器中读取您想要在构建脚本中使用的任何文件。以上是关于Android开发中如何定义和使用数组的主要内容,如果未能解决你的问题,请参考以下文章
如何在 android 应用程序中使用现有的 Sip Stack 库?
MyEclipse中android 项目如何解决第三方jar无法关联源码的问题( The JAR of this class file belongs to container 'Androi