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,我已经有很多了。我的问题是关于 reusingbuildConfigField 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:使用数组项填充列表视图

如何在 android 应用程序中使用现有的 Sip Stack 库?

android 数组如何使用

MyEclipse中android 项目如何解决第三方jar无法关联源码的问题( The JAR of this class file belongs to container 'Androi

Android openGl开发详解-相机预览

如何修复空白片段?