嗨,我正在尝试实现android应用程序的风格(免费和完整)的活壁纸。在eclipse中,我经常使用以下代码打开我自己android活动中的实时壁纸预览:
Intent intent = new Intent();
intent.setAction(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER);
String pkg = WallpaperService.class.getPackage()
.getName();
String cls = WallpaperService.class.getCanonicalName();
intent.putExtra(
WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT,
new ComponentName(pkg, cls));但是现在它不能正常工作,因为在android中,免费和完整的版本都使用了相同的包名和不同的applicationId。问题是,无论是免费版本还是全版本,无论是哪种口味,它都会走向完整的版本。我在项目分级中使用applicationId指定了应用程序风格,如下所示:
productFlavors {
free {
applicationId "com.kkl.app.free"
}
full {
applicationId "com.kkl.app"
}
}我们如何使它得到正确的软件包名称,以匹配应用程序的口味?
发布于 2015-11-19 14:38:10
您可以在您的Activity中调用Activity以获得安卓packageName。这将是清单文件中的packageName,即与当前applicationId相等的文件。
方法文档可以找到这里。
发布于 2015-11-19 15:38:58
使用以下方法修正:
intent.setAction(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER);
String pkg = getPackageName();
String cls = WallpaperService.class.getCanonicalName();
intent.putExtra(
WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT,
new ComponentName(pkg, cls));特别感谢林伟斯顿
发布于 2018-02-15 20:06:27
你可以用香料做很多事情,但是你想做的事情比任何人都要简单得多。
首先,您有一个构建变体来选择调试和运行的风格。所以,使用这个,否则您的所有调试将使用默认的主发行版。
其次,您不必获得包名,只需使用build标志或检查样式即可。也就是。
android {
signingConfigs {
releaseA35Demo {
storeFile file("$projectDir/../yaskeystore.jks")
storePassword System.getenv('YOUR_APP_STUDIO_STORE_PASSWORD')
keyAlias System.getenv('YOUR_APP_STUDIO_KEY_ALIAS')
keyPassword System.getenv('YOUR_APP_STUDIO_KEY_PASSWORD')
}
}
flavorDimensions 'default'
productFlavors {
a35Demo {
dimension 'default'
applicationId "com.appstudio35.yourappstudio"
buildConfigField "String", "SERVER_URL", '"http://fakeNumbers.compute-1.amazonaws.com:3006"'
buildConfigField "int", "BUSINESS_ID", "1"
versionCode 1
versionName "0.01.01-b1"
minSdkVersion 21
}
a35DemoDev {
dimension 'default'
applicationId "com.appstudio35.yourappstudio.dev"
buildConfigField "String", "SERVER_URL", '"http://fakeNumbers2.compute-1.amazonaws.com:3006"'
buildConfigField "int", "BUSINESS_ID", "2"
versionCode 1
versionName "0.01.01-b1"
minSdkVersion 21
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
productFlavors.a35Demo.signingConfig signingConfigs.releaseA35Demo
productFlavors.a35DemoDev.signingConfig signingConfigs.releaseA35Demo
}
}
}然后简单地在代码中引用它,比如:
BuildConfig.BUSINESS_ID 不管你需要什么。只需确保在库项目自动导入BuildConfig时,不要意外地使用它。
下一个方法是,如果您想检查您的口味,您可以简单地做BuildConfig.FLAVOR,看看您在哪一个。但是,请记住,有一些关于使用它的编译器警告,因为您正在检查它的样式,并且BuildConfig假设它始终是您当前在构建变量下拉列表中的任何内容,这不是真的,您可以忽略这个始终正确的或总是错误的警告,我向您保证它是有效的。
最后,您的包问题仅仅是因为您正在调试错误的构建变量。我会添加一个图像,这样你就可以看到在哪里改变它。

希望这能有所帮助。
https://stackoverflow.com/questions/33806740
复制相似问题