小编Vit*_*nko的帖子

如何添加自定义按钮状态

例如,默认按钮在其状态和背景图像之间具有以下依赖关系:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_window_focused="false" android:state_enabled="true"
        android:drawable="@drawable/btn_default_normal" />
    <item android:state_window_focused="false" android:state_enabled="false"
        android:drawable="@drawable/btn_default_normal_disable" />
    <item android:state_pressed="true" 
        android:drawable="@drawable/btn_default_pressed" />
    <item android:state_focused="true" android:state_enabled="true"
        android:drawable="@drawable/btn_default_selected" />
    <item android:state_enabled="true"
        android:drawable="@drawable/btn_default_normal" />
    <item android:state_focused="true"
        android:drawable="@drawable/btn_default_normal_disable_focused" />
    <item
        android:drawable="@drawable/btn_default_normal_disable" />
</selector>
Run Code Online (Sandbox Code Playgroud)

如何定义自己的自定义状态(类似于smth android:state_custom),那么我可以使用它来动态更改我的按钮视觉外观?

android state button

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

Android:无法更新到Android SDK工具,修订版7

目前我有Android SDK 2.1(+工具修订版4).我想升级到Android SDK 2.2.当我尝试这样做时,我知道我需要首先将Android SDK工具升级到版本7.所以我同意,这个过程开始然后我收到一个错误:

- =警告!= - 无法重命名或移动文件夹.在Windows上,这通常意味着程序正在使用该文件夹(例如Windows资源管理器或您的防病毒软件.)请暂时停用您的防病毒软件.还请关闭所有可能正在访问目录'D:\ Install\Programming\android-sdk-working-dir\android-sdk_r04-windows\android-sdk-windows\too!s'的程序.准备好后,按YES再试一次.

下载Android SDK工具,修订版7安装Android SDK工具,修订版7

无法将目录D:\ Install\Programming\android-sdk-working-dir\android-sdk_r04-windows\android-sdk-windows\tools重命名为D:\ Install\Programming\android-sdk-working-dir\android- sdk_r04-WINDOWS\Android的SDK-WINDOWS\TEMP\ToolPackage.old01.

我知道http/https和防病毒问题.所以我取消了我的AV.我还关闭了任何可能保存文件夹句柄的应用程序.Eclipse也关闭了(我通过命令行启动管理器).但是我仍然得到同样的错误.

看起来唯一可以保存文件夹句柄的应用程序是管理器本身,因为它的起始目录是错误所抱怨的目录('\ tools').

我在Win XP Pro + SP3上.我以管理员身份运行.

有没有人有想法?

sdk android windows-xp upgrade

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

Android上的DefaultHttpClient中连接和套接字超时的默认值是什么?

在Android 2.1/2.2上我使用DefaultHttpClientAndroid SDK中找到的.

Apache在他们的文档中说有两个超时:

  • CoreConnectionPNames.SO_TIMEOUT ='http.socket.timeout':定义套接字超时(SO_TIMEOUT),以毫秒为单位,即等待数据的超时,换句话说,两个连续数据包之间的最大周期不活动.超时值为零被解释为无限超时.此参数需要java.lang.Integer类型的值.如果未设置此参数,则读取操作不会超时(无限超时).

  • CoreConnectionPNames.CONNECTION_TIMEOUT ='http.connection.timeout':确定建立连接之前的超时(以毫秒为单位).超时值为零被解释为无限超时.此参数需要java.lang.Integer类型的值.如果未设置此参数,则连接操作不会超时(无限超时).

我尝试在Android源中搜索这两个超时的默认值,但无法找到.有谁知道这些超时的默认值是什么?我想获得一个链接到值设置的源或关于此的官方文档(而不仅仅是听取意见).

android timeout httpclient

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

如何在Android 8中为FCM推送消息指定Android通知通道

我们的应用程序现在有targetSdkVersion 26(Android 8),该应用程序使用FCM推送通知.

由于FCM文档规定我将FCM客户端库更新为版本11.2.0:

dependencies {
     compile 'com.google.firebase:firebase-messaging:11.2.0'
}
Run Code Online (Sandbox Code Playgroud)

通过此FCM客户端库更新,FCM通知开始出现在Android设备上.很好,但是当应用程序处于后台时,它是处理FCM消息的系统,因此它使用名为"Miscellaneous"的默认Android通知通道,这不是我们想要的(我们在该列表中有其他通知通道和"其他"声音混乱) ).

正如FCM文档所述,有一种方法可以为FCM消息指定默认通知通道:

(可选)在应用程序组件中,元数据元素用于设置通知的默认图标,颜色和通知通道(Android O中的新增功能).只要传入的消息没有明确设置图标,颜色或notification_channel,Android就会使用这些值.

但是没有显示代码示例(样本仅显示图标和颜色).所以我只是通过在github上使用Firebase云消息传递快速入门中的一个示例来搜索:

<meta-data
    android:name="com.google.firebase.messaging.default_notification_channel"
    android:value="@string/default_notification_channel_id"/>
Run Code Online (Sandbox Code Playgroud)

但它不起作用 - FCM通知仍然出现在"杂项"频道中.我在日志中看到:

W/FirebaseMessaging:AndroidManifest中缺少默认通知通道元数据.将使用默认值.

当然,我试图重新安装该应用程序.还有问题.

好吧,理想情况下,应该有一些方法在发送消息时在后端指定通知通道.允许测试发送的FCM开发控制台现在在UI中有这样的选项:

在此输入图像描述

它工作正常.然而,我们的后端使用Java Amazon SNS API,我不知道该API是否允许在发送消息时指定Android通知通道(因为它是一个新的Android功能,亚马逊需要时间来采用它).因此,设置默认通知通道AndroidManifest.xml现在是一种有效的解决方法,但它不起作用.

android amazon-sns firebase-cloud-messaging notification-channel

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

停止线程并再次开始在blackberry中提供IllegalThreadStateException

IllegalThreadStateException在使用以下代码时遇到异常:我已经启动了这个线程一次(通过使用thread.start())并再次尝试在另一个地方启动它,因此使用以下代码:

thread.interrupt();
thread.start();
Run Code Online (Sandbox Code Playgroud)

但是thread.start()扔了IllegalThreadStateException.

我应该用什么来解决它?

java multithreading blackberry java-me

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

Android - @aar包中的Desugar类

我正在尝试从我的库中构建一个@aar包,用作客户端项目中的依赖项.

在我的库模块中,我正在使用:

compileOptions{
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
Run Code Online (Sandbox Code Playgroud)

在达到客户端依赖关系之前,我想要解决代码并使Java 7兼容.这意味着我需要实际提供一个@aar包,其中Lambda函数和所有其他Java 8相关功能已经移植到Java 7字节码.

我面临的问题是在库模块上使用:

apply plugin: 'com.android.library'
Run Code Online (Sandbox Code Playgroud)

没有执行desugaring任务,这意味着字节码包含Java 8相关的导入,如:

java.lang.invoke.LambdaMetafactory
Run Code Online (Sandbox Code Playgroud)

这将迫使我的客户端将他的编译选项更新为JavaVersion.VERSION_1_8,这是我想要避免的事情.

所以作为最后一个问题:'com.android.library'插件执行的desugaring任务是仅在'com.android.application'插件中可用?如果是这种情况,请你帮我提一些关于如何将这一步也包含在库插件中的提示?

android android-library java-8 aar

8
推荐指数
1
解决办法
467
查看次数

Android上用于在整个应用程序会话中保持活动deathes/restarts之间的数据的最佳做法是什么?

我们正在设计一个Android应用程序,其中包含几个以向导方式工作的活动 - 用户应该从活动#1转到活动#5以进入最终活动(#6).

由于我们知道操作系统可以在低内存中突然终止活动,因此我们使用Application类作为静态存储来保存用户输入的数据"向导"活动以及我们的应用程序在整个会话中需要的其他数据.

不幸的是我们发现这种方法失败了 - 看起来像Application类实例也可以被OS杀死(这是在Android 1.6和1.5上专门发现的).我们对这种方法的期望是否错误(我们认为Application类实例总是适用于整个应用程序会话)?

所以问题是 - 在整个应用程序会话的活动deathes/restarts之间保持数据的Android最佳实践是什么?

architecture session android android-activity

7
推荐指数
1
解决办法
3928
查看次数

Android内部存储 - 有哪些限制?

1)我们的Android应用程序将数据存储在内置的SQLite DB中.

我看到DB可以抛出android.database.sqlite.SQLiteFullException,但API中没有确切的信息是什么限制.

任何人都可以告诉数据库的大小限制是什么,以免进入SQLiteFullException?

我假设DB会将数据存储在设备的内部存储器中(与SDCard相比).我对吗?鉴于SQLite DB只是一个文件,可能数据库大小受限于免费的内部存储空间.再次 - 我是对的吗?如果是,那么Android上的内部存储大小是多少?怎么检测呢?它是基于设备型号还是操作系统版本而有所不同?


2)我们还需要保存应用设置.我认为SharedPreferences很适合.但问题是 - SharedPreferences也保存到内部存储吗?如果是,那么它是否与DB存储其文件的存储相同?

提前致谢!

size storage android internal limit

6
推荐指数
1
解决办法
4898
查看次数

如何设置BlackBerry应用内支付测试的环境?

我正在尝试在BB应用程序中实现应用程序内支付.

好的,我已经阅读了API/docs,现在我需要编写一个简单的测试.以下是API关于测试的内容:

要在不收取费用的情况下测试端到端购买流程,您可以将BlackBerry ID设置为测试帐户.通过测试帐户,您可以下载与BlackBerry App World供应商帐户关联的任何应用程序或数字商品,而无需支付任何费用.对于此类测试,必须关闭本地测试,否则将不会尝试网络连接.

从上面我看到我需要实现2个目标:

  • (1)"将BlackBerry ID设置为测试帐户"(这意味着什么).
  • (2)"对于这种类型的测试必须关闭本地测试"(这意味着什么).

API对于如何做到这一点很模糊.我只能猜测点(1)可以通过他的AppWorld帐户在我的客户(我正在为其编写应用程序)方面完成.这是真的吗?关于第(2)点,我完全没有想法.有人能指出我正确的方向吗?

testing payment blackberry in-app-purchase

6
推荐指数
1
解决办法
1350
查看次数

Android:如何以编程方式直接调用PIN屏幕?

目前使用2.2 API我可以通过DevicePolicyManager.lockNow()锁定设备.

调用该方法后,我得到了一个标准的Android锁屏.我必须解锁设备才能看到我真正感兴趣的下一个场景 - PIN屏幕.

所以,我的问题是"是否可以直接调用PIN屏幕(无需先进入锁定屏幕)?".

android screen

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

Android - 为什么TextView显示为高度?

我在这里遇到了一个奇怪的问题.基本上我有一个没有默认设置文本的TextView.我希望它的高度为0,因为它没有内容,但它上面和下面的元素之间似乎存在差距.如果我在XML中将高度设置为0,然后尝试通过Java代码更改它,那么它不会重置高度.

如果内容为空但如何允许以编程方式更改高度,如何将高度设置为0?

这是我的代码:

<TextView 
    android:gravity="center_horizontal|center_vertical"
    android:id="@+id/connectionStatus"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:textSize="18px"
    android:textStyle="bold">
</TextView>
Run Code Online (Sandbox Code Playgroud)

而Java代码是这样的:

    private void getConnectionStatus()
{
    if (hasConnection() == true)
    {
        //do something
    }
    else
    {
        connectionStatus.setHeight(48);
        connectionStatus.setText("No Internet Access");
    }   
}
Run Code Online (Sandbox Code Playgroud)

height android visibility view

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

Java中循环的局部变量初始化最有效的方法是什么?

可能重复:
在循环内部或外部声明变量

请考虑这两个Java代码示例:

// 1st sample
for (Item item : items) {
    Foo foo = item.getFoo();
    int bar = item.getBar();
    // do smth with foo and bar
}

// 2nd sample
Foo foo;
int bar;
for (Item item : items) {
    foo = item.getFoo();
    bar = item.getBar();
    // do smth with foo and bar
}
Run Code Online (Sandbox Code Playgroud)

样品之间的性能/内存消耗是否有任何差异?如果是,那么它是否依赖于句柄的类型(对象与原语)?

java variables performance loops

0
推荐指数
1
解决办法
332
查看次数