小编Jal*_*esh的帖子

Keytool生成32个字符的长密钥哈希而不是28个

我使用以下命令为Android的Facebook应用控制台生成密钥哈希

.\keytool.exe -exportcert -alias app_android -keystore release.keystore | openssl sha1 -binary | openssl base64
Run Code Online (Sandbox Code Playgroud)

正如Facebook开发者SDK帮助所述

根据帮助页面和开发人员控制台,密钥散列应该是28个字符长,但是keytool生成32个字符的长密钥.

Java版本:jdk1.8.0_31操作系统:Windows 7

为android生成.

编辑

根据@ Shreyash-mashru的建议,我使用以下代码来获取keyhash

try {
        PackageInfo info = getPackageManager().getPackageInfo(
                "my.package.name",
                PackageManager.GET_SIGNATURES);
        for (Signature signature : info.signatures) {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(signature.toByteArray());
            Log.e("KeyHash:", "++++++++++++++++++++++++++++++++++++++" + Base64.encodeToString(md.digest(), Base64.DEFAULT));
        }
    } catch (PackageManager.NameNotFoundException e) {
        Log.e("KeyHash:", "++++++++++++++++++++++++++++++++++++++" + e.toString());

    } catch (NoSuchAlgorithmException e) {
        Log.e("KeyHash:", "++++++++++++++++++++++++++++++++++++++" + e.toString());
    }
Run Code Online (Sandbox Code Playgroud)

但是,如果有人仍然可以帮助我理解为什么命令行工具生成32个char长键哈希而不是28 ...

android facebook keytool

24
推荐指数
2
解决办法
5423
查看次数

在viewpager上,Setadapter和SetCurrentItem删除由pagetransform设置的转换

我在我的应用程序中使用viewpager动态加载视图并水平滚动它们.我还使用了pageTransform来缩放下一个和上一个视图.从中获取了代码

http://developer.android.com/training/animation/screen-slide.html

每个下一个视图都取决于先前视图的用户响应.在每个OnPageSelected上,我正在加载下一个视图

    mPagerAdapter.addView(ViewToBeAdded, AddAtPostion); //Empty previous view holder
    mViewPager.setAdapter(mPagerAdapter);
Run Code Online (Sandbox Code Playgroud)

问题第1步:一旦我做了setAdapter,整个viewpager会滚动到第一个位置,(我不知道为什么会这样).

问题第2步:为了规避问题1,我打电话给

    mViewPager.setCurrentItem(AddAtPostion, false);. 
Run Code Online (Sandbox Code Playgroud)

//如果我使用第二个参数调用为true,则viewPager会从第一个项目滚动到当前项目.

但是,当我调用它时,pageTransform设置的转换将被删除(因为仅在滚动时应用get),并且显示前一个视图持有者而不进行任何转换.

问题第3步:为了规避问题2,我添加了runnable来调用setCurrentItem后的假拖动(从尽快将PageTransformer应用到PagerView)

private Handler mhandler = new Handler();
private Runnable mrunnable = new Runnable() {
    public void run() {

        mViewPager.beginFakeDrag();
        mViewPager.fakeDragBy(0f);
        mViewPager.endFakeDrag();

    }
};
//Called as mhandler.postDelayed(mrunnable, 10); after setCurrentItem.
Run Code Online (Sandbox Code Playgroud)

这确实解决了我应用转换的问题.但是,在转换应用之前,会看到一个空视图支架的闪光.我没办法.我是Android的初学者,不知道如何解决任何问题.如果问题1本身得到解决,我就不必找到解决方法.

下面发布的是添加视图并使用空布局扩充上一个视图的代码

public int addView(View v, int position) {

    prevPos = currPos;
    currPos = position;

    LayoutInflater inflater = (LayoutInflater) mContext .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    if(prevPos != -1)
    {
        views.set(prevPos, ((View) inflater.inflate(R.layout.empty_template, null, false))); …
Run Code Online (Sandbox Code Playgroud)

android android-viewpager

7
推荐指数
0
解决办法
1288
查看次数

Android:绿色机器人事件总线:单个帖子收到多个事件

我在Android中使用绿色机器人事件总线

我使用EventBus.getDefault()调用所有事件.post和onStop我调用EventBus.getDefault().unregister(this); 在我的活动中.然而,一旦我按下并重新打开应用程序,在单个事件帖子上,会收到多个onEvent().还有其他人遇到过这个问题吗?

@Override
protected void onStart() {
    super.onStart();
    getBus().register(this);
}

@Override
protected void onPause() {
    getBus().unregister(this);
    super.onPause();
}

@Override
protected void onStop() {
    getBus().unregister(this);
    super.onStop();
}


protected EventBus getBus() {
    return EventBus.getDefault();
}
Run Code Online (Sandbox Code Playgroud)

android greenrobot-eventbus

5
推荐指数
1
解决办法
1335
查看次数

在线 Gitlab ci 上安装 Java

这是我的 .gitlab-ci.yml 脚本。

before_script:
  - uname -a
  - apt-get install default-jre default-jdk openjdk-7-jre openjdk-7-jdk
  - java -version
  - export MODE="service"
  - export PID_FOLDER="/var/run/gitlab-runner-test"

dev:
  script:
    - chmod +x gradlew
    - ./gradlew assembleDebug
Run Code Online (Sandbox Code Playgroud)

我试图在 gitlab.com 页面上运行脚本来编译一个 android 项目。我检查了对我的脚本进行了一些更改后发现 ci linux Linux runner-8a2f473d-project-881036-concurrent-0 4.5.0-coreos-r1 #2 SMP Thu May 5 07:27:26 UTC 2016 上没有安装 java x86_64 GNU/Linux。

我尝试安装 java,就像为 ruby​​ 显示的示例一样,但它不起作用,并给出了无法定位包错误。

我不确定应该是什么包,因为它看起来像一个 ubuntu 系统,但是在我的 ubuntu 上运行的命令在这里不起作用。

这不是本地安装。

java linux ubuntu gitlab gitlab-ci

5
推荐指数
1
解决办法
5361
查看次数