小编jos*_*ick的帖子

HttpEntity现在在Android上被弃用了,还有什么选择?

随着Android 5.1的发布,看起来所有Apache http的东西都被弃用了.看文档是没用的; 他们都说

This class was deprecated in API level 22. Please use openConnection() instead. Please visit this webpage for further details.

这是第一次阅读它时没关系,但是当每个被弃用的类都说明了这一点时,它没那么有用.

总之,什么是类的替代喜欢HttpEntity,特别是StringEntityMultipartEntity我替换BasicNameValuePair了我自己的Android Pair<T, S>类实现,它看起来URLEncoder.encode是一个很好的替代品URLEncodedUtils,但我不知道该怎么做HttpEntity.

编辑

我决定重新编写网络内容.要尝试使用Retrofit和OkHttp

编辑

认真看看将你的通话和东西转换为Retrofit.很漂亮.我很高兴我做到了.有一些障碍,但它很酷.

android httpurlconnection apache-httpclient-4.x

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

每部Android手机都支持SHA-256吗?

所以阅读这篇文章:如何在Android中计算字符串的SHA-256哈希值?

和文档:http://developer.android.com/reference/java/security/MessageDigest.html

我很好奇; 哪些手机支持SHA-256?在文档中,关于'NoSuchAlgorithmException'的一行让我觉得有些手机不支持所有算法.在我为一个应用程序实现这个并期望它在所有手机上工作之前我想知道如果有人知道这个...?

我觉得奇怪的是MessageDigest类没有一些常量来选择你想要使用的算法.

hash android sha message-digest

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

获取NoSuchFieldError INSTANCE org/apache/http/message/BasicHeaderValueParser

我正在研究Android上的应用.我正在使用httpcore 4.3.3.我尝试使用时会得到这个ContentType.parse(string)

java.lang.NoSuchFieldError: No static field INSTANCE of type Lorg/apache/http/message/BasicHeaderValueParser; in class Lorg/apache/http/message/BasicHeaderValueParser; or its superclasses (declaration of 'org.apache.http.message.BasicHeaderValueParser' appears in /system/framework/ext.jar)
Run Code Online (Sandbox Code Playgroud)

我做了一些谷歌搜索,我理解为什么我得到错误,但我不确定如何解决它.从我读过的内容来看,似乎ContentType试图利用Android附带的BasicHeaderValueParser,而该类还没有INSTANCE字段.有什么帮助吗?

这些是相关的进口:

compile('org.apache.httpcomponents:httpmime:4.3.6') {
    exclude module: 'httpclient'
}
compile 'org.apache.httpcomponents:httpcore:4.3.3'
Run Code Online (Sandbox Code Playgroud)

android apache-httpclient-4.x androidhttpclient

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

android确定设备是否在从右到左的语言/布局

有没有办法确定设备是否采用从右到左的语言(类似阿拉伯语),而不是从左到右(英语)?

与旧的API级别(低至10)兼容的东西是必要的

我最终在接受的答案中使用了xml方法.更进一步,我还添加了此处指示的代码,用于我无法访问getResources()的实例

识别Android中的RTL语言

更多信息

这个问题仍然有很多流量; 我想指出的其他事情:当我最初问这个问题时,我认为这部分是为了帮助解决在RTL与LTR中显示不同的指点V形符号 - 另一种实现这一点的光滑方式是在标准和ldrtl目录中放置可绘制的资源- 意味着没有代码需要确定显示哪一个!

android right-to-left

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

Android片段oncreateview调用了标签更改

我已经和Android一起工作了一段时间,但片段对我来说有点新鲜(因为它们可能对大多数人来说都是如此).无论如何,我有以下代码,它工作正常.我有三个片段,每个片段一个.我想知道每次切换标签时是否正常调用onCreateView,这样做是否有意义?每次选项卡更改时,是否应该有一种方法不重绘片段?

我正在从一个有3个活动的应用程序转换它,每个选项卡中有一个,每次选项卡更改时重新创建视图似乎都是浪费,以前在选项卡更改之间存在视图就好了. .

顺便说一下,这段代码来自:http://thepseudocoder.wordpress.com/2011/10/04/android-tabs-the-fragment-way/

public class Tabs extends FragmentActivity implements
    TabHost.OnTabChangeListener {

final String MAP_TAB = "Map";
final String IMAGES_TAB = "Images";
final String SETTINGS_TAB = "Settings";

TabHost mTabHost;
HashMap<String, TabInfo> mapTabInfo = new HashMap<String, TabInfo>();
TabInfo mLastTab = null;

private class TabInfo {
    private String tag;
    private Class clss;
    private Bundle args;
    private Fragment fragment;
    TabInfo(String tag, Class clazz, Bundle args) {
        this.tag = tag;
        this.clss = clazz;
        this.args = args;
    }

}

class TabFactory implements …
Run Code Online (Sandbox Code Playgroud)

tabs android android-fragments

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

androidTest AndroidManifest.xml被忽略了

我有同样的问题,在这篇文章中没有检测到AndroidTest Manifest权限

并且这个帖子中的androidManifest在androidTest目录中被忽略了

- >如果我把测试清单中androidTest,debugAndroidTest,androidTestDebug,它从来没有被拾起和合并.

关于将AndroidManifest.xml放入debug文件夹的答案是正确的; 这似乎确实有效.(将测试清单放入src/debug

我想知道的是为什么你不能把它放在androidTest目录中?我试图弄清楚这一点时所阅读的所有文档都让你听起来像是应该的,如果你不能那么我就会认为这听起来像清单合并中的一些错误.

对于它的价值,我正在使用Android Studio

android android-manifest android-testing

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

Android AES 256位加密数据

所以我看过很多例子,做了大量的谷歌搜索,看了Stack Overflow上的例子......我需要帮助.我有一个Android应用程序,我在设备上存储用户名和密码,我需要加密AES 256.从查看示例,这是我到目前为止:

public class Security {
    Cipher ecipher;
    Cipher dcipher;

    // 8-byte Salt
    byte[] salt = {
        (byte)0xA9, (byte)0x9B, (byte)0xC8, (byte)0x32,
        (byte)0x56, (byte)0x35, (byte)0xE3, (byte)0x03
    };

    // Iteration count
    int iterationCount = 19;

    public Security (String passPhrase) {
        try {
            // Create the key
            KeySpec keySpec = new PBEKeySpec(passPhrase.toCharArray(), salt, iterationCount);
            SecretKey key = SecretKeyFactory.getInstance(
                "PBEWithSHAAndAES").generateSecret(keySpec);
            ecipher = Cipher.getInstance(key.getAlgorithm());
            dcipher = Cipher.getInstance(key.getAlgorithm());

            // Prepare the parameter to the ciphers
            AlgorithmParameterSpec paramSpec = new PBEParameterSpec(salt, iterationCount);

            // Create the ciphers …
Run Code Online (Sandbox Code Playgroud)

encryption android aes

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

使用localbroadcastmanager sendorderedbroadcast的组合发送广播

我想在这篇博客文章中实现CommonsWare所描述的内容:http://commonsware.com/blog/2010/08/11/activity-notification-ordered-broadcast.html.这篇文章很有意义,我可以在这里浏览示例源代码:https://github.com/commonsguy/cw-advandroid/tree/master/Broadcast.

我很好奇的是,如果LocalBroadcastManager.getInstance(UnzipService.this).sendBroadcast(broadcast);您在清单中定义的类型的广播接收器仍然会接收到服务内部的呼叫.

如果我问的不清楚,我想要做的是使用LocalBroadcastManager,因为我的服务的广播不一定需要在系统范围内看到,如果可能,我宁愿保持私有,但是如果用户关闭我的应用并且服务仍在运行,我也想显示通知.有没有办法结合这两种功能而不在服务内部发送两次广播?

(我不想做什么)像: LocalBroadcastManager.getInstance(UnzipService.this).sendBroadcast(broadcast); sendOrderedBroadcast(broadcast);

service android broadcastreceiver commonsware

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

使用Android上传文件到Django Web服务

我正在开发一个与Django后端接口的Android应用程序.我已经使用mod_wsgi部署了web服务,并且有许多Web服务调用可以工作并且已经过测试,因此我知道一切都应该正常工作.所有其他调用工作正常.这是我在Android中调用以发送照片的方法.

public static String uploadFile(String url, int server_id, String filepath) {
    try {
        client.getParams().setParameter("http.socket.timeout", 90000); // 90 second
        HttpPost post = new HttpPost(url);

        MultipartEntity mpEntity = new MultipartEntity();
        mpEntity.addPart("image", new FileBody(new File(filepath), "image/jpeg"));
        post.setEntity(mpEntity);
        post.addHeader("server_id", String.valueOf(server_id));

        HttpResponse response = Connector.client.execute(post);
        if (response.getStatusLine().getStatusCode() != 200) { return "false"; }
        return convertStreamToString(response.getEntity().getContent());
    } catch (Exception e) {
        if (Constants.DEBUG) e.printStackTrace();
        return "false";
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我在views.py文件中使用的方法来接收和处理图像:

@csrf_exempt
def incident_upload(request):
    if request.method == 'POST':
            server_id = request.POST['server_id']
            incident = get_object_or_404(Incident, pk=server_id)
            imagePath = '/Library/WebServer/program/uploads/' …
Run Code Online (Sandbox Code Playgroud)

django android file-upload

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

android十进制格式为阿拉伯语,符号在数字的右侧

我正在尝试支持左语言的RTL,并且正在测试阿拉伯语(我对此一无所知)。

负号/正号应该位于数字的右侧还是左侧?我认为应该在左侧,但是当我使用Android的DecimalFormat将数字放入设备设置的语言环境中时,该符号会显示在右侧。

有没有人遇到过这种情况,知道如何解决?我能想到的最好是,如果它是负数,则用括号将其打印出来,这应该可以解决但不是理想的情况。

编辑

抱歉,代码总是有帮助的。如果我打印以下内容(经度为负):

DecimalFormat coord_df = new DecimalFormat("#.000000");
coord_df.format(loc.getLongitude())
Run Code Online (Sandbox Code Playgroud)

像这样印

##,######-
Run Code Online (Sandbox Code Playgroud)

#号是阿拉伯数字(如此处显示在东部阿拉伯行上的数字:http : //en.wikipedia.org/wiki/Eastern_Arabic_numerals

我需要在数字的正确边上得到负数(我相信这是左边)

我最终只是在需要弄乱显示数字(如此处的答案)时检查设备是否为RTL:android确定设备是否为从右到左的语言/布局

如果设备是RTL,则我使用带有负号的负子模式作为后缀,如下所示:

"#.000000,#.000000-"
Run Code Online (Sandbox Code Playgroud)

android decimalformat right-to-left

5
推荐指数
2
解决办法
1545
查看次数

Android getlastknownlocation返回null

我正在为GPS提供商调用getLastKnownLocation,它返回null.文档说如果没有启用提供程序,可能会发生这种情况,但我知道它是.如果不存在最后已知位置,则提供程序是否可以返回null?我没有看到文档说"如果不存在最后一个已知位置,则可能返回null"

android location

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