小编a.b*_*b.d的帖子

Android AutocompleteTextView使用ArrayAdapter和Filter

背景信息

我目前正在撰写的应用程序处理地点.创建场所的主要方法是输入地址.提供便捷的方法对于UX来说非常重要.

当前解决方案

在调查问题一段时间后,我得出的结论是,最好的方法是根据当前位置和用户输入自动完成的文本区域(如Google Map应用程序中).由于Google Map API不提供此功能,因此我必须自行实施.

目前的实施

为了获得地址建议我使用Geocoder.这些建议由自定义ArrayAdaptor通过自定义过滤器提供给AutoCompleteTextView.

ArrayAdapter(某些代码已被删除)

public class AddressAutoCompleteAdapter extends ArrayAdapter<Address> {

@Inject private LayoutInflater layoutInflater;

private ArrayList<Address> suggested;
private ArrayList<Address> lastSuggested;
private String lastInput = null;
private AddressLoader addrLoader;

public AddressAutoCompleteAdapter(Activity activity, 
        AddressLoaderFactory addrLoaderFact,
        int maxSuggestionsCount) {
    super(activity,R.layout.autocomplete_address_item);
    suggested = new ArrayList<Address>();
    lastSuggested = new ArrayList<Address>();
    addrLoader = addrLoaderFact.create(10);
}

...

@Override
public Filter getFilter() {
    Filter myFilter = new Filter() {

        ...

        @SuppressWarnings("unchecked")
        @Override
        protected FilterResults …
Run Code Online (Sandbox Code Playgroud)

android autocomplete autocompletetextview android-arrayadapter

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

寻找建议来保护用python-flask编写的私有REST API

我目前正在使用微框架Flask在python中编写一个rest API.它是一个私有API,它处理用户数据.我计划使用此API来构建网络和Android应用.

现在我使用摘要身份验证来保护私人用户数据.例如,如果您想使用用户bob在我的服务上发布数据,您可以在myapi/story/create上发布请求,并使用摘要模式提供bob的凭据.

我知道这不是一个好的解决方案,因为:
-Digest auth不安全
- 客户端未经过身份验证(如何保护与当前用户无关的请求,例如创建新用户?)

我阅读了很多关于oAuth的内容,但是三脚认证似乎有点过分,因为我不打算向第三方开放我的API.
2脚oAuth不适合,因为它只为客户提供身份验证,而不是为用户提供身份验证.
oAuth的另一个问题是我没有找到在Python中实现它的综合指南.我找到了python-oauth2库,但我不了解服务器示例,我找不到其他文档.此外,似乎oAuth的许多方面都未包含在此示例中.

所以我的问题是:

  1. 是否有替代方案(不是oAuth)用于以合理的安全级别对客户端和用户进行身份验证?
  2. 如果oAuth是最好的解决方案:
    • 如何跳过授权过程(因为用户不必授权第三方客户端)?
    • 是否有python-oauth2或任何其他Python库的详细文档?

任何帮助或建议将不胜感激.

python rest oauth-provider

15
推荐指数
1
解决办法
6471
查看次数

通过Android模拟器上的su获取root访问权限

我需要通过su获取root访问权来午餐TcpDump二进制文件(我正在研究一种Android嗅探器).我用这个代码:

try {
    Process process = Runtime.getRuntime().exec("su");
    DataOutputStream os = new DataOutputStream(process.getOutputStream());
    os = new DataOutputStream(process.getOutputStream());
    os.writeBytes("/data/local/tcpdump-arm -c 10 -s 0 -w /data/local/out.txt\n");
    os.writeBytes("exit\n");
    os.flush();
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

它在root手机上完美运行,但我想在模拟器中实现这一点.默认情况下,您无法通过模拟器上的su获得root权限(尽管可以通过adb shell获得).

我找到了这篇文章

但它对我不起作用.我读过这个提示不适用于sdk的修复版本,但它没有说明它将起作用.我尝试使用sdk修订版10和avd运行Android 2.1.

android android-emulator

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