首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓风味ACTION_CHANGE_LIVE_WALLPAPER

安卓风味ACTION_CHANGE_LIVE_WALLPAPER
EN

Stack Overflow用户
提问于 2015-11-19 14:32:38
回答 3查看 548关注 0票数 1

嗨,我正在尝试实现android应用程序的风格(免费和完整)的活壁纸。在eclipse中,我经常使用以下代码打开我自己android活动中的实时壁纸预览:

代码语言:javascript
复制
        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指定了应用程序风格,如下所示:

代码语言:javascript
复制
productFlavors {
    free {
        applicationId "com.kkl.app.free"
    }
    full {
        applicationId "com.kkl.app"
    }
}

我们如何使它得到正确的软件包名称,以匹配应用程序的口味?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-19 14:38:10

您可以在您的Activity中调用Activity以获得安卓packageName。这将是清单文件中的packageName,即与当前applicationId相等的文件。

方法文档可以找到这里

票数 1
EN

Stack Overflow用户

发布于 2015-11-19 15:38:58

使用以下方法修正:

代码语言:javascript
复制
        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));

特别感谢林伟斯顿

票数 1
EN

Stack Overflow用户

发布于 2018-02-15 20:06:27

你可以用香料做很多事情,但是你想做的事情比任何人都要简单得多。

首先,您有一个构建变体来选择调试和运行的风格。所以,使用这个,否则您的所有调试将使用默认的主发行版。

其次,您不必获得包名,只需使用build标志或检查样式即可。也就是。

代码语言:javascript
复制
    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
        }
    }
}

然后简单地在代码中引用它,比如:

代码语言:javascript
复制
BuildConfig.BUSINESS_ID 

不管你需要什么。只需确保在库项目自动导入BuildConfig时,不要意外地使用它。

下一个方法是,如果您想检查您的口味,您可以简单地做BuildConfig.FLAVOR,看看您在哪一个。但是,请记住,有一些关于使用它的编译器警告,因为您正在检查它的样式,并且BuildConfig假设它始终是您当前在构建变量下拉列表中的任何内容,这不是真的,您可以忽略这个始终正确的或总是错误的警告,我向您保证它是有效的。

最后,您的包问题仅仅是因为您正在调试错误的构建变量。我会添加一个图像,这样你就可以看到在哪里改变它。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33806740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档