Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.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
Java 获取身份验证令牌不';我不能在客户经理那里工作_Java_Android_Accountmanager_Android Build Flavors - Fatal编程技术网

Java 获取身份验证令牌不';我不能在客户经理那里工作

Java 获取身份验证令牌不';我不能在客户经理那里工作,java,android,accountmanager,android-build-flavors,Java,Android,Accountmanager,Android Build Flavors,我已经在我的android应用程序中实现了帐户管理器。我可以添加帐户并获得身份验证令牌,没有任何问题,并且已签名的apk也可以正常工作。 直到我为我的build.grade添加了一种新的风格,流程才得以完美运行 productFlavors { release { applicationId "com.faranegar.flight.release" versionName "1.0.0" buildConfigField 'String

我已经在我的android应用程序中实现了帐户管理器。我可以添加帐户并获得身份验证令牌,没有任何问题,并且已签名的apk也可以正常工作。 直到我为我的build.grade添加了一种新的风格,流程才得以完美运行

productFlavors {
    release {
        applicationId "com.faranegar.flight.release"
        versionName "1.0.0"
        buildConfigField 'String', 'BASE_API', '"http://release.mysite.ir/api/"'
        buildConfigField 'String', 'BASE_MOBILE_API', '"https://releaseapp.mysite.ir/api/"'

    }
    demo {
        applicationId "com.faranegar.flight.demo"
        buildConfigField 'String', 'BASE_API', '"http://demo.mysite.ir/api/"'
        buildConfigField 'String', 'BASE_MOBILE_API', '"http://demoapp.mysite.ir/api/"'
        versionName "1.0.0"

    }
}
但在签名的apk中,当gradle中添加flavor时,get auth令牌不起作用。 我获得身份验证令牌,如下所示:

final AccountManager accountManager = AccountManager.get(context);
    if (ActivityCompat.checkSelfPermission(context, Manifest.permission.GET_ACCOUNTS) != PackageManager.PERMISSION_GRANTED) {
        // TODO: Consider calling
        ActivityCompat.requestPermissions((Activity) context,
                new String[]{Manifest.permission.GET_ACCOUNTS},
                Constants.GET_ACCOUNT_PERMISSION);
        return;
    }
    final Account[] accounts = accountManager.getAccountsByType(AccountGeneral.ACCOUNT_TYPE);
    for (final Account account : accounts) {
        if (account.name.equals(Utils.getUserName(context))) {

            final AccountManagerFuture<Bundle> future = accountManager.getAuthToken(account, AccountGeneral.ACCOUNT_TYPE, null, (Activity) context, null, null);
            new Thread(new Runnable() {
                @Override
                public void run() {
                    try {
                        ((Activity)context).runOnUiThread(new Runnable() {
                            @Override
                            public void run() {
                                Toast.makeText(context, "bundle token", Toast.LENGTH_SHORT).show();
                            }
                        });
                        Bundle bnd = future.getResult();
                        final String authtoken = bnd.getString(AccountManager.KEY_AUTHTOKEN);
                        accountControllerListener.onGetToken(authtoken);
                    } catch (final Exception e) {
                        sendErrorToRetrofit(e);
                        e.printStackTrace();
                    }
                }
            }).start();
        }
    }

注意:当我追踪时,我发现MyAuthenticator中的getAuthToken方法从未在签名apk中调用过

我认为你用错误的方式破坏了味道。 查看下面的示例代码,了解定义一种风格与定义一种构建类型的区别:

不同的构建类型:

    productFlavors {
    demo {
        applicationIdSuffix ".demo"
        versionNameSuffix "-demo"
    }
    full {
        applicationIdSuffix ".full"
        versionNameSuffix "-full"
    }
}
您可以在android{}块内的模块级build.gradle文件中创建和配置生成类型。创建新模块时,Android Studio会自动为您创建调试和发布构建类型。尽管调试生成类型没有出现在生成配置文件中,但Android Studio使用可调试的true对其进行配置。这允许您在安全的Android设备上调试应用程序,并使用通用调试密钥库配置APK签名

不同口味:

    productFlavors {
    demo {
        applicationIdSuffix ".demo"
        versionNameSuffix "-demo"
    }
    full {
        applicationIdSuffix ".full"
        versionNameSuffix "-full"
    }
}
创建和配置产品风格后,单击通知栏中的“立即同步”。同步完成后,Gradle会根据您的构建类型和产品风格自动创建构建变体,并根据这些变体命名。例如,如果您创建了“demo”和“full”产品风格,并保留了默认的“debug”和“release”构建类型,那么Gradle将创建以下构建变体:

  • 蠕形螨

  • 人口释放

  • 完全调试

  • 完全释放


这样做,然后检查问题是否仍然存在。

我认为您以错误的方式去除了味道。 查看下面的示例代码,了解定义一种风格与定义一种构建类型的区别:

不同的构建类型:

    productFlavors {
    demo {
        applicationIdSuffix ".demo"
        versionNameSuffix "-demo"
    }
    full {
        applicationIdSuffix ".full"
        versionNameSuffix "-full"
    }
}
您可以在android{}块内的模块级build.gradle文件中创建和配置生成类型。创建新模块时,Android Studio会自动为您创建调试和发布构建类型。尽管调试生成类型没有出现在生成配置文件中,但Android Studio使用可调试的true对其进行配置。这允许您在安全的Android设备上调试应用程序,并使用通用调试密钥库配置APK签名

不同口味:

    productFlavors {
    demo {
        applicationIdSuffix ".demo"
        versionNameSuffix "-demo"
    }
    full {
        applicationIdSuffix ".full"
        versionNameSuffix "-full"
    }
}
创建和配置产品风格后,单击通知栏中的“立即同步”。同步完成后,Gradle会根据您的构建类型和产品风格自动创建构建变体,并根据这些变体命名。例如,如果您创建了“demo”和“full”产品风格,并保留了默认的“debug”和“release”构建类型,那么Gradle将创建以下构建变体:

  • 蠕形螨

  • 人口释放

  • 完全调试

  • 完全释放

执行此操作并检查问题是否仍然存在