Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过编程从Android应用程序读取渐变文件属性_Android_Android Studio_Gradle - Fatal编程技术网

如何通过编程从Android应用程序读取渐变文件属性

如何通过编程从Android应用程序读取渐变文件属性,android,android-studio,gradle,Android,Android Studio,Gradle,build.gradle文件包含以下部分。如何从android应用程序MainActivity android { defaultConfig { applicationId "com.gatta.e.gatta" minSdkVersion 11 targetSdkVersion 21 versionCode 1 versionName "1.0" } } 您不必读取Gradle文件来获取版本代码

build.gradle文件包含以下部分。如何从android应用程序MainActivity

android {
    defaultConfig {
        applicationId "com.gatta.e.gatta"
        minSdkVersion 11
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
}

您不必读取Gradle文件来获取版本代码。以下是活动中的直接方法:

private PackageInfo getPackageInfo() {
    PackageInfo pi;
    try {
        pi = this.getPackageManager().getPackageInfo(
                         this.getPackageName(), PackageManager.GET_ACTIVITIES);
    } catch (PackageManager.NameNotFoundException e) {
        // TODO: handle this
        Log.e("yourMessage", e);
    }
    return pi;
}
并在您的
onCreate(…)
方法中使用此选项,例如获取版本代码:

String versionCode = "" + getPackageInfo().versionCode;
有关
PackageInfo
类的更多信息。以及对课程的快速描述:

关于包内容的总体信息。这对应于从AndroidManifest.xml收集的所有信息


我认为您无法读取build.gradle文件中的任何属性,但有一个API可以获取应用程序版本代码和版本名

这是我经常使用的实用类

import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager.NameNotFoundException;

/**
 * Utility class used in getting application version code and version name.
 */
public class AppUtils {

        /**
         * @return Application's version code from the PackageManager.
         */
        public static int getAppVersionCode(Context context) {
                try {
                        PackageInfo packageInfo = context.getPackageManager()
                                        .getPackageInfo(context.getPackageName(), 0); 
                        return packageInfo.versionCode;
                } catch (NameNotFoundException e) {
                        // should never happen
                        throw new RuntimeException("Could not get package name: " + e); 
                }
        }

        /**
         * @return Application's version name from the PackageManager.
         */
        public static String getAppVersionName(Context context) {
                try {
                        PackageInfo packageInfo = context.getPackageManager()
                                        .getPackageInfo(context.getPackageName(), 0); 
                        return packageInfo.versionName;
                } catch (NameNotFoundException e) {
                        // should never happen
                        throw new RuntimeException("Could not get package name: " + e); 
                }
        }
}

以上属性是特定于生成配置的。您可以在java文件中将它们称为BuildConfig.propertyName,因为所有构建配置变量都会自动转换为BuildConfig.java文件中的静态资源。 e、 g.applicationId可以用作

    BuildConfig.APPLICATION_ID
在您的情况下,您可以将versionCode称为:

    BuildConfig.VERSION_CODE
如果您想要自定义BuildConfig,还可以按如下方式执行: 在build.gradle default config/flavor部分中,使用:

   buildConfigField "variable type", "variable name", new Type(var name)
e、 g

   multiDexEnabled false
   buildConfigField "Boolean", "MY_FIELD", new Boolean(multiDexEnabled).toString

我希望这会有所帮助。

此外,我甚至不认为可以使用内置API读取gradle文件,因为似乎并非所有IDE都使用gradle来构建APK,因此不值得实现它。@TheDestroyer12:正确。此外,当您使用Android Studio构建时,似乎build.gradle甚至没有包含在APK中,这是有道理的。