这个问题可能看起来很宽泛,但我会尽量简短地总结一下。
所以我在 Play 商店Multi Timer Free上复制了一个示例应用程序
应用程序用于设置多个计时器。
我几乎完成了应用程序。但我面临着电池优化和警报管理器的一些问题,特别是华为和荣耀(中国 Andorid OS)。我的前台服务在一段时间后停止工作。
问题: 即使没有电池优化白名单,上面提到的示例应用程序也非常出色。有什么办法可以解决这个问题?
我几乎尝试了以下链接中提到的所有内容。但没有运气
华为设备杀死我的前台服务,即使使用 dontkillmyapp.com 的解决方案
打瞌睡模式如何影响后台/前台服务,有/没有部分/完全唤醒锁?
示例代码,当按下设备锁定/解锁按钮时,我希望在收到 SCREEN_ON 广播时显示一个简单的 TOAST。这在一段时间内工作正常。
但是在华为设备中 => 通过滑动杀死应用程序后 -> 1 - 2 分钟后,我的吐司将停止工作。
package com.demo.forgroundservicedemo
import android.content.Intent
import android.os.IBinder
import androidx.core.app.NotificationCompat
import android.os.Build
import android.app.*
import android.app.NotificationManager
import android.app.NotificationChannel
import android.content.BroadcastReceiver
import android.content.Context …Run Code Online (Sandbox Code Playgroud) 我正在尝试在同一个应用程序中实现播放服务和华为服务,但希望能够根据口味配置使用哪一个。每种风格都使用它自己的 applicationIdSuffix。所以对于每个不同的风格,华为插件都失败了,我无法编译。
我的应用程序模块的根目录中包含agconnect-services.json文件。我如何为每个构建风格指定这个文件的不同版本?
如果不可能,那么在我的根 build.gradle 文件中,我有这一行:
classpath 'com.huawei.agconnect:agcp:1.1.1.300'
Run Code Online (Sandbox Code Playgroud)
是否可以仅在特定口味上使用此行?
我正在测试华为的地图套件。
该应用程序已在 App Gallery Connect 中创建,我完成了所有步骤。其他 HMS 服务工作正常。我所有的依赖都是正确的。
因此,我使用视图来表示地图。
将onMapReady被调用,查看负载,我可以与地图进行互动,增加销,找到我的位置等,但我不能看地图,只有空白的砖。
我没有收到错误,onMapReady被调用就好了。
我也试过华为 Github 上的演示,结果是一样的。我也尝试过片段,结果相同。
我的 mapView
<com.huawei.hms.maps.MapView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:id="@+id/mapView"
android:layout_width="match_parent"
android:layout_height="match_parent"
map:cameraTargetLat="48.893478"
map:cameraTargetLng="2.334595"
map:cameraZoom="8.5"/>
Run Code Online (Sandbox Code Playgroud)
我的 onCreate
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_huawei_map_test);
Log.d(TAG, "yo: ");
if (!hasPermissions(this, RUNTIME_PERMISSIONS)) {
ActivityCompat.requestPermissions(this, RUNTIME_PERMISSIONS, 100);
}
mMapView = findViewById(R.id.mapView);
Bundle mapViewBundle = null;
if (savedInstanceState != null) {
mapViewBundle = savedInstanceState.getBundle(MAPVIEW_BUNDLE_KEY);
}
MapsInitializer.setApiKey("");//my key
mMapView.getMapAsync(this);
mMapView.onCreate(mapViewBundle);
Run Code Online (Sandbox Code Playgroud)
我的 onMapReady
@Override
public void onMapReady(HuaweiMap map) {
//get map instance …Run Code Online (Sandbox Code Playgroud) 我们已经使用 Flutter 在与 GMS 集成的 Google Play 中发布了多个应用程序。现在,我们想将现有的应用程序发布到华为应用程序库。目前,该应用程序已与 GMS 和 HMS 集成以进行推送通知,并且运行良好。为了区分应用程序,我们使用与 Google Play 商店不同的签名为 App Gallery 签名。
经过一番研究,我们发现app bundle id 需要以.huawei 后缀结尾才能与IAP 集成。我们不使用任何 IAP,但将来可能会使用。但是,我们在构建应用程序时遇到了一些问题,因为 GMS 的 bundle id 没有使用 .huawei 后缀。我们更喜欢为 Google Play 和 App Gallery 组合相同的代码库。
我的问题是,是否有必要为华为应用程序库中发布的应用程序包 ID 包含 .huawei 后缀。如果是,使用 Flutter 为 Google Play 和 App Gallery 部署应用程序的最佳方法是什么。
我在 Gradle7.0工作正常时遇到了这个错误6.8.3
agcp-gradle-7-错误
AGCP插件
FAILURE:构建失败,出现异常。
类型 'AGCPluginTask' 属性 'randomEncryptComponent' 的类型 boolean 不应使用 @Optional 进行注释。
原因:原始类型的属性不能是可选的。
可能的解决方案:
有关此问题的更多详细信息,请参阅https://docs.gradle.org/7.0/userguide/validation_problems.html#cannot_use_optional_on_primitive_types。
我想检测应用程序的安装源。
在Android上我们可以使用两种方法来检测安装源:PackageManager#getInstallerPackageName(String)或PackageManager#getInstallSourceInfo(String)。这两个调用都将返回安装程序应用程序的包名称。例如:
com.amazon.veneziacom.android.vending我的问题是,对于从华为应用市场安装的应用程序,此方法会返回什么?
android android-package-managers huawei-mobile-services appgallery huawei-developers
我有一个应用程序配置了两种编译风格,一种使用 HMS,另一种则不使用。不使用HMS的flavor编译时,包名与json文件中的包名不一致。结果,出现错误。
Task failed with an exception.
-----------
* What went wrong:
Execution failed for task ':app:processAppgalleryconnectLatestDebugAGCPlugin'.
> ERROR: Failed to verify AGConnect-Config '/client/package_name', expected: 'com.dise.appge.hms', but was: 'com.dise.appge.gms'
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
==============================================================================
Run Code Online (Sandbox Code Playgroud)
那么不同风味使用不同包名时如何解决这个问题呢?
我在演示应用程序中不断收到上述错误。我有HMS core版本5.0.0.329(初始版本)。我的互联网连接稳定。我已经在应用程序库上创建了测试应用程序,该应用程序已获得批准,但仍然存在相同的错误。还没有运气。
*注意:此错误仅发生在华为设备 Y6p - 型号 - MED-LX9 -Android 版本 -10 上。三星 S7 上展示的广告 - Android 版本 - 7.0
以下是我的测试应用程序的代码。我使用的是Android studio Arctic Fox 2020.3.1
模块.gradle:
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'com.huawei.agconnect'
}
android {
compileSdk 30
defaultConfig {
applicationId "com.example.huaweitestads"
minSdk 21
targetSdk 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
}
dependencies { …Run Code Online (Sandbox Code Playgroud) android android-studio huawei-mobile-services huawei-developers huawei-ads
我已遵循此处和此处的文档(非常简单),但地图视图不会加载任何图块。
我使用HMS Toolkit,配置向导成功。我还设置了我的 api 密钥,在我的应用程序类和活动类 onCreate 中都使用了这一行。
MapsInitializer.setApiKey(HUAWEI_API_KEY);
以下是设备信息和SDK版本:
这是屏幕:
相关错误日志:
E/HmsMapKit_MapView_151:createDelegate:创建者== null
E/HmsMapKit_GrsClient_24:GRS 返回空。
E/HmsMapKit_ErrorTraceLogPusher_4:缓存错误跟踪日志:ErrorTraceLogDTO{ scene = GET_GRS_URL_FAILED', message='GRS 返回空,服务名称为 com.huawei.hms.map。'}
E/HmsMapKit_ErrorTraceLogPusher_12:eventId 为 null 或为空。
E/HmsMapKit_AuthenticateClient_27:com.huawei.hms.maps.foundation.client.c发生异常
E/HmsMapKit_ErrorTraceLogPusher_4:缓存错误跟踪日志:ErrorTraceLogDTO{场景= ACCESS_SERVICE_ERROR',消息='060001:NETWORK_ERROR'}
E/HmsMapKit_AuthenticateCache_0:认证错误,抛出RetryException。
E/HmsMapKit_CopyrightDelegate_27:获取版权声明html数据失败:htmlData = null
E/HmsMapKit_TileCache_38:startUrlRequest身份失败,没有权限获取图块。授权结果:060011
PS:我在这个演示中遇到了完全相同的问题。
android android-studio huawei-mobile-services huawei-developers huawei-map-kit
我尝试从 hms 服务器请求 oauth 令牌,但它总是返回missing required parameter: client_id给我。
url: https://oauth-login.cloud.huawei.com/oauth2/v3/token?grant_type=client_credentials&client_id=XXX&client_secret=XXX
header: Content-Type application/x-www-form-urlencoded
response:
{
"sub_error": 20001,
"error_description": "missing required parameter: client_id",
"error": 1102
}
Run Code Online (Sandbox Code Playgroud) android ×8
gradle ×2
alarmmanager ×1
appgallery ×1
firebase ×1
flutter ×1
huawei-ads ×1
java ×1
json ×1
kotlin ×1
oauth-2.0 ×1
package ×1