我有一个使用WebView和HTTP cookie的Android应用程序.此应用程序适用于运行API 19或更低版本的Android设备.API 21未保存http cookie供以后参考.
Android WebView代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_token);
WebView mWebView = (WebView) findViewById(R.id.activity_main_webView1);
mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
mWebView.setWebViewClient(new WebViewClient());
mWebView.setWebChromeClient(new WebChromeClient() {
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
return false;
}
});
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setGeolocationEnabled(true);
mWebView.getSettings().setAppCacheEnabled(true);
mWebView.getSettings().setDatabaseEnabled(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setAllowUniversalAccessFromFileURLs(true);
mWebView.loadUrl("file:///android_asset/index.html");
}
Run Code Online (Sandbox Code Playgroud)
Android Manifest
uses-sdk android:minSdkVersion="16" android:targetSdkVersion="19"
uses-permission android:name="android.permission.INTERNET"
Run Code Online (Sandbox Code Playgroud)
服务器端代码创建cookie:
Response.Cookies("mycookie")("myvalue") = "123456789"
Response.Cookies("mycookie").Expires = Date() + 10
Response.Cookies("mycookie").Secure = True
Run Code Online (Sandbox Code Playgroud)
服务器端代码读取cookie:
Response.Write Request.Cookies("mycookie")("myvalue")
Run Code Online (Sandbox Code Playgroud)
当它在API 19或更低版本上运行时,我可以读/写cookie没问题.我正在使用cookie访问任何使用cookie的网页.任何帮助,将不胜感激.
这肯定是一个非常愚蠢的问题(也许有点基于意见),但是我如何创建一个类似枚举的对象来存储错误代码之类的东西,这些代码是常量并且稍后可以在代码中访问?
在我看来,有四种选择:
1)一个状态代码 - 一个变量
STATUS_NEW = 0
STATUS_PENDING = 1
STATUS_DONE = 2
STATUS_ERROR = -1
if some_object.status == STATUS_NEW:
print 'this object is pretty fresh!'
Run Code Online (Sandbox Code Playgroud)
这对我来说不太好看.
2)包含所有状态代码的字典,其名称为密钥:
STATUS = {'new': 0, 'pending': 1, 'done': 2, 'error': -1}
if some_object.status == STATUS['new']:
print 'you got the idea.'
Run Code Online (Sandbox Code Playgroud)
这看起来更丑陋,但仍然有一个对象比几个对象更好.
3)一个命名的元组看起来更好,但它在初始化时看起来更糟糕:
STATUS = namedtuple('Status', ['error', 'new', 'pending', 'done'])
STATUS = STATUS(error=-1, new=0, pending=1, done=2)
if some_object.status == STATUS.new:
print 'looks prettier than using dict!'
Run Code Online (Sandbox Code Playgroud)
4)使用课程:
class Status:
NEW = …Run Code Online (Sandbox Code Playgroud) 我在交互式shell中测试了一些Django功能
这是我尝试探测这些对象,请注意最后的Nones列表
>>> [print(foo) for foo in CharacterSkillLink.objects.all() if foo.speciality]
Streetwise (Street Countdown) Roran
[None]
Run Code Online (Sandbox Code Playgroud)
并且具有更正统的列表理解:
>>> [print(foo) for foo in range(1,10)]
1
2
3
4
5
6
7
8
9
[None, None, None, None, None, None, None, None, None]
Run Code Online (Sandbox Code Playgroud)
九个Nones,都是连续的.
我为什么要这样做?