小编Mic*_*ł K的帖子

删除操作栏下方的阴影

我使用actionbarsherlock.下面的代码片段负责将其背景更改为自定义代码.

<style name="Widget.Styled.ActionBar" parent="Widget.Sherlock.ActionBar">
    <item name="background">@drawable/actionbar_bg</item>
    <item name="android:background">@drawable/actionbar_bg</item>
    <...>  
</style>

<style name="Theme.MyApp" parent="@style/Theme.Sherlock.Light">
    <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
    <item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
    <..>
</style>
Run Code Online (Sandbox Code Playgroud)

它适用于actionbarsherlock(在蜂窝下面的版本).但是在ICS中,我在动作栏下面有一个阴影,我不想要.什么样的项目让它消失?

android actionbarsherlock android-actionbar

202
推荐指数
7
解决办法
13万
查看次数

Firebase云消息传递 - 处理注销

当用户退出我的应用程序并且我不再希望他接收到设备的通知时,我该如何处理这种情况.

我试过了

FirebaseInstanceId.getInstance().deleteToken(FirebaseInstanceId.getInstance().getId(), FirebaseMessaging.INSTANCE_ID_SCOPE)
Run Code Online (Sandbox Code Playgroud)

但我仍然收到我的设备的通知registration_id.

我还确保这是我应删除的令牌:

FirebaseInstanceId.getInstance().getToken(FirebaseInstanceId.getInstance().getId(), FirebaseMessaging.INSTANCE_ID_SCOPE)
Run Code Online (Sandbox Code Playgroud)

或者简单地说FirebaseInstanceId.getInstance().getToken()).

我也尝试过FirebaseInstanceId.getInstance().deleteInstanceId(),但是下次我打电话给FirebaseInstanceId.getInstance.getToken我时会收到空(它在第二次尝试时起作用).

我想,在deleteInstanceId我能够立即getToken()再次打电话之后,它看起来像是一个黑客.并且还有这个答案表明不应该这样做,但它建议删除显然不起作用的令牌.

那么处理这个问题的正确方法是什么?

android firebase firebase-cloud-messaging

59
推荐指数
6
解决办法
3万
查看次数

移动MapFragment(SurfaceView)会导致黑色背景闪烁

我正在尝试实施新的Android Google Maps API(v2).然而,它与SlidingMenu似乎并不顺利.如您所知,MapFragment实施基于SurfaceView.问题是SurfaceView它不喜欢移动它 - 我的意思是把它放在可移动的视图中:

移动它时,它会在其像素最初放置的位置留下黑洞.它看起来像这样.

通过在其上指定透明背景SurfaceView或者甚至在其上放置透明可以部分地解决该问题View.我只是无法想象,如果只是对我来说结果是不可接受的,或者我有一个不同的问题,使它看起来如何.

要查看它的外观,请观看此视频.

(对不起质量,但无论如何都可以轻松看到问题)

当打开时拉开正常的列表视图(橙色屏幕)时SlidingMenu,动画很流畅.但是一MapFragment出现,地图上就会出现一些奇怪的刷新/闪烁/同步问题.

在HTC One S和三星Galaxy ACE上测试过.


我解决它的超级疯狂的想法:每次开始动画开始时,截取MapFragment(应该可以使用SurfaceView)并在动画期间将其放置.但我真的不知道该怎么做...... 拍摄地图的截图是不可能的,但也许有人会从中受到启发.

或者也许禁用以其他方式重绘地图,我不知道.


更新:

发现了这个.

看起来SurfaceView可以更改为TextureView以消除这些限制.但由于MapFragment基于SurfaceView,我不知道它是否可以实现.

另一个更新 似乎此问题已在4.1+设备上得到解决.他们只使用了TextureView.但在较低版本中,我们仍然需要使用变通方法.

android surfaceview android-maps mapfragment android-maps-v2

53
推荐指数
2
解决办法
2万
查看次数

如何使用Google Play Services 6.5粒度依赖关系管理

这个问题不再有效.但答案可能仍然对其他人有用,所以我会留在这里.


原始问题:

在11月17日的一篇博文中,谷歌人介绍了期待已久的细粒度依赖管理(以应对dex方法限制).我们有12月8日,我仍然无法下载sdk(6.1是最新的),也没有获得有关如何引入粒度依赖的文档.关于这一个的任何消息?或者在官方发布之前如何获得它?

android google-play-services

29
推荐指数
1
解决办法
2万
查看次数

禁止"Android中不允许使用标识符"

对于我用Kotlin编写的应用程序,我使用反引号的方法名称进行测试,如下所示:

fun `API login error - don't save token or user`() {
Run Code Online (Sandbox Code Playgroud)

它工作正常,测试编译和工作没有问题,但Android Studio中的Lint将这些方法标记为错误消息Identifier not allowed in Android.

有没有办法抑制这一点,以便Lint检查通过没有错误,并且在Android Studio中没有标记为红色下划线?

android kotlin android-lint android-studio

25
推荐指数
4
解决办法
2570
查看次数

使用Facebook SDK时,java.exe以非零退出值2结束

当我尝试编译我的应用程序时,我收到以下错误

Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_60\bin\java.exe'' finished with non-zero exit value 2
Run Code Online (Sandbox Code Playgroud)

如果我摆脱Facebook Android SDK它编译没有问题.

我的build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21 //tried 19 and 22 changing targetSdkVersion and buildToolsVersion accordingly
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "..."
        minSdkVersion 15
        targetSdkVersion 21
    }

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
        }
    }

...

}

dependencies {
    ...
    compile 'com.facebook.android:facebook-android-sdk:3.23.1' //tried older versions as well
}
Run Code Online (Sandbox Code Playgroud)

java android gradle facebook-android-sdk android-gradle-plugin

20
推荐指数
1
解决办法
4万
查看次数

全局加载器(LoaderManager),用于在多个活动/片段中重用

我想要实现的目标:

我有两个不同的片段.我希望他们两个以两种形式(在列表和地图上)显示相同的数据.我希望他们共享一个Loader(AsyncTaskLoader特别是).一切正常,但装载机不会重复使用.创建另一个并且数据加载两次.

我所做的:

Fragment我使用的LoaderManager lm = getActivity().getSupportLoaderManager(); 两个中我实现LoaderCallbacks<ArrayList<Item>>了所需的方法.在我用两个lm.initLoader(0, args, this);.

但是当我输出lm.toString()它时,看起来这些是两个不同的装载机.并且数据被下载两次.

如何从不同的Activity/Fragment重新连接到同一个Loader,而不是从它开始的那个?

应该是可能的,因为无论如何都要将上下文附加到Loader onCreate(),例如配置更改.

android android-fragments android-3.0-honeycomb android-loadermanager android-fragmentactivity

16
推荐指数
1
解决办法
7514
查看次数

检查http请求是否来自我的Android应用程序

我从外部服务器检索数据以用于我的Android应用程序.我希望这些数据只能通过我的应用访问.我使用标准的http连接以json格式从apache/php服务器获取数据.我还向服务器发送一些参数来检索相关数据.现在,我打算做的是:

  1. 发送参数
  2. 发送类似md5("someSecretPhrase"+ params)的内容.
  3. 检查服务器端的密码短语是否正确.

现在,问题是 - 对逆向工程这是一种安全的方法吗?目前我认为没有其他可能获得这些数据.但如果有人能够反编译我的apk,他也将能够检索到这个"someSecretPhrase"(在服务器端很难做到),然后访问服务器,不是吗?这是真正的威胁吗?是否还有其他可能通过服务器验证我的应用程序?

我看了论坛,例如.确定是否从Android应用程序发出HTTP请求?然后适当地回应,但他们没有解释反编译问题.

php security android md5

14
推荐指数
2
解决办法
6751
查看次数

ActionBar样式中的indeterminateProgressBar - 填充问题

我想在ActionBar中放置一个不确定的进度条(使用ActionBarSherlock).一切正常,但我希望它成为一个小进度条.我使用以下风格:

<style name="IndeterminateProgress" parent="@android:style/Widget.ProgressBar.Small">
    <item name="android:progressBarPadding">32dp</item>
    <item name="progressBarPadding">32dp</item>
    <item name="android:itemPadding">32dp</item>
    <item name="itemPadding">32dp</item>
</style>


<style name="Widget.Styled.ActionBar.Tiles" parent="Widget.Sherlock.Light.ActionBar">
    <item name="android:indeterminateProgressStyle">@style/IndeterminateProgress</item>
    <item name="android:progressBarPadding">32dp</item>
    <item name="progressBarPadding">32dp</item>
    <item name="android:itemPadding">32dp</item>
    <item name="itemPadding">32dp</item>
</style>
Run Code Online (Sandbox Code Playgroud)

问题是我无法在进度条上设置填充.正如你可以在上面看到,我试过的每一个可能的组合itemPaddingprogressBarPadding

结果总是一样的: 在此输入图像描述

有任何想法吗?

android actionbarsherlock android-actionbar

14
推荐指数
1
解决办法
5835
查看次数

不能在androidTest中使用Kotlin反引号的方法名称 - 错误的描述符异常

在我的单元测试中,我使用Kotlin的反引号方法来提高可读性,例如

@Test fun `Foo should return bar`()
Run Code Online (Sandbox Code Playgroud)

它适用于<module>/src/test目录中的测试,但是当我尝试执行相同操作时,<module>/src/androidTest我得到一个异常:

Error:java.lang.IllegalArgumentException: bad descriptor: Lcom/packageName/MainActivityTest$Foo should return bar$1;
Error:Execution failed for task ':sample:transformClassesWithDexBuilderForDebugAndroidTest'. > com.android.build.api.transform.TransformException: org.gradle.tooling.BuildException: com.android.dx.cf.iface.ParseException: bad descriptor: Lcom/packageName/MainActivityTest$Foo should return bar$1;
Run Code Online (Sandbox Code Playgroud)

是否有一些技巧可以使它工作?

android unit-testing kotlin android-testing

14
推荐指数
2
解决办法
967
查看次数