如何在Android上的SQLite数据库中获取布尔字段的值?
我通常使用getString()
,getInt()
等来获取我的字段的值,但似乎没有getBoolean()
方法.
我正在构建一个需要下载并与在线数据库同步的Android应用程序,我将我的查询从应用程序发送到php页面,该页面以JSON格式从数据库返回相关行.
有人可以告诉我迭代JSON数组的最佳方法吗?
我收到一个对象数组:
[{json object},{json object},{json object}]
我可以使用什么最简单的代码来访问数组中的JSONObjects?
编辑:现在我想起了我用来迭代循环的方法是:
for (String row: json){
id = row.getInt("id");
name = row.getString("name");
password = row.getString("password");
}
Run Code Online (Sandbox Code Playgroud)
所以我想我已经能以某种方式将返回的Json转换为可迭代的数组.任何想法我怎么能做到这一点?
我为我的迷途道歉,但我从网上找到的一个例子中得到了这个,但后来一直无法找到它.
我有一个应用程序,我希望能够用于从远程查询获取连接状态报告.
我想知道WiFi是否已连接,以及是否通过移动网络启用了数据访问.
如果WiFi超出范围,我想知道我是否可以依赖移动网络.
问题是当我通过WiFi连接时,启用的数据总是返回为真,并且我只能在未通过WiFi连接时正确查询移动网络.
我看到的所有答案建议轮询以查看当前的连接是什么,但我想知道我是否需要移动网络,即使我目前可能通过WiFi连接.
无论如何判断移动网络数据是否在没有轮询的情况下启用以查看是否已连接?
编辑
因此,当通过WiFi连接时如果我转到设置并取消选择"数据已启用",然后在我的应用程序中执行此操作:
boolean mob_avail =
conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isAvailable();
Run Code Online (Sandbox Code Playgroud)
mob_avail返回为'true',但我已禁用移动网络数据,所以我希望它是'false'
如果我关闭WiFi,则(正确)没有连接,因为我已禁用移动网络数据.
那么当我通过WiFi连接时,如何检查移动网络数据是否已启用?
UPDATE
我按照ss1271的评论中的建议查看了getAllNetworkInfo()
我在以下3个条件下输出了有关移动网络的信息
WiFi关闭 - 移动数据
WiFi On - 移动数据关闭
WiFi On - 移动数据
并得到以下结果:
WiFi关闭:
mobile [HSUPA],state:CONNECTED/CONNECTED,reason:unknown,extra:internet,roaming:false,failover:false,isAvailable:true,featureId:-1,userDefault:false
WiFi On/Mobile OFF
NetworkInfo:type:mobile [HSUPA],state:DISCONNECTED/DISCONNECTED,reason:connectionDisabled,extra:(none),漫游:false,failover:false,isAvailable:true,featureId:-1,userDefault:false
WiFi On/Mobile On
NetworkInfo:type:mobile [HSPA],state:DISCONNECTED/DISCONNECTED,reason:connectionDisabled,extra:(none),漫游:false,failover:false,isAvailable:true,featureId:-1,userDefault:false
因此,您可以看到isAvailable每次都返回true,并且状态仅在WiFi处于影响状态时显示为Disconnected.
澄清
我不看,看看我的手机是目前移动网络连接.我AM试图建立用户是否已经启用了移动网络/禁用数据访问.他们可以通过转到设置 - >无线和网络设置 - >移动网络设置 - >数据启用来打开和关闭此功能
我有一个应用程序需要在启动时进行密集的数据库操作.该应用程序在手机上保存联系人的本地副本,并在启动时与Android联系人数据库同步.
如果用户启动应用程序,则启动异步任务,在后台执行数据库同步.如果用户关闭应用程序,操作将继续运行,这很好.但是,如果用户再次打开应用程序,则会启动异步任务并生成错误.
无论如何检查任务是否已经从应用程序的其他实例运行?
我正在尝试使用sqlite数据库中的日期.我将我的日期存储为时间戳,但是当我使用strftime()将它们格式化为人类可读日期时,我会得到不可预见的结果.
请考虑以下内容,我选择当前时间戳:
SELECT strftime("%s","now");
1281353727
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用我知道代表的时间戳格式化日期,现在期望获得今天日期的人类可读格式:
SELECT strftime('%d - %m - %Y ', 1281353727);
01 - 04 - 3503
Run Code Online (Sandbox Code Playgroud)
相反,我得到了上述结果.这是正确的行为吗?难道我做错了什么?
提前致谢,
凯文
我有一个应用程序,我希望将Android联系人列表中的详细信息发送到远程服务器,以便用户可以在线查看他的联系人.为此,我想通知远程服务器手机上对联系人列表所做的任何更改.
我已经在启动手机时启动的服务中的"ContactsContract.Contacts.CONTENT_URI"上设置了一个ContentObserver.
我有一些静止,前两个是偶然的,第三个是我的主要关注点.
1:一旦我设置了一个在我的Cursor上注册ContentObserver的服务,该观察者是否只存在于服务中?我的意思是,如果服务被杀死,contentObserver会继续观察吗?
2:我怀疑答案是否定的,但无论如何我都会问.无论如何知道哪个联系人正在更新触发我的contentObserver的onchange方法?目前我必须编制手机上所有联系人的列表并将其发送到我的远程服务器,发送更新的联系人的详细信息会更容易.
3:这是我的主要问题,当我对我的联系人列表进行更改时,onChange方法会连续两次触发.1次更改,2次通话.无论如何管理这个?
public class ContactService extends Service {
JSONArray contactList;
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public void onCreate() {
Log.i("C2DM","content observers initialised");
super.onCreate();
//Call Log Content Provider observer
MyContentContactsObserver contactsObserver = new MyContentContactsObserver();
ContactService.this.getContentResolver().registerContentObserver (ContactsContract.Contacts.CONTENT_URI, true, contactsObserver);
}
private class MyContentContactsObserver extends ContentObserver {
public MyContentContactsObserver() {
super(null);
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
Log.i("LOG","detected change in contacts: "+selfChange);
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我的logCat中有2个快速行:
detected change in contacts: false
detected …
Run Code Online (Sandbox Code Playgroud) 在Android中,是否可以使用ContentValues
?将时间戳插入数据库?当我尝试使用以下内容添加它时:
ContentValues args = new ContentValues();
args.put(MY_DATE, my_date);
Run Code Online (Sandbox Code Playgroud)
我收到一个错误,告诉我my_date
需要成为一个String
.有关如何实现这一目标的任何建议?
我已经为 Windows 安装了 Docker 作为一个完整的菜鸟,希望尝试一下。我确保 Hyper-V 已启用,虚拟化也已启用
任何时候我尝试运行 docker 桌面时,鲸鱼图标都是红色的,它表明它无法启动,如果我尝试从 cmd 运行命令,我会收到以下错误
连接时出错:获取 http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.40/images/json: open //./pipe/docker_engine: 系统找不到指定的文件。在 Windows 上的默认守护程序配置中,必须提升 docker 客户端运行以进行连接。此错误也可能表示 docker 守护程序未运行。
我不知道如何解决问题。
我还注意到,即使我通过添加/删除程序完全卸载 Docker,我列出 WSL 设备时的状态始终设置为“正在安装”
windows docker windows-subsystem-for-linux docker-for-windows
我有一个扩展ListView的活动.我用查询结果填充我的列表到sqlite数据库.list元素由start_time,end_time,client_name和status组成.这些是我需要为每个列表项显示的4位信息.
我的问题是:我可以为这个ListView项目分配隐藏的元素吗?
例如,我想存储该ListView项的数据库行的_id字段,这样当我单击它时,我可以根据该数据库行的数据启动一个新活动.
编辑
我用来从我的光标填充列表的代码:
String[] columns = new String[] {VisitsAdapter.KEY_CLIENT_FULL_NAME, VisitsAdapter.KEY_STATUS,VisitsAdapter.KEY_CLIENT_START_TIME, VisitsAdapter.KEY_CLIENT_END_TIME};
// the XML defined views which the data will be bound to
int[] to = new int[] { R.id.name_entry,R.id.number_entry,R.id.start_time_display,R.id.end_time_display };
SimpleCursorAdapter mAdapter = new SimpleCursorAdapter(HomeScreen.this, R.layout.list_element, cur, columns, to);
Run Code Online (Sandbox Code Playgroud)
其中R.layout.list_item是我的列表项的XML.我来自PHP/HTML背景,所以我通常会在这里做一个隐藏字段来保存我的_id值,然后我可以在单击列表项后访问它.我可以在android中做类似的事吗?我可以在我的xml布局中放置一个隐藏的_id字段吗?
我试图从我的MSSQL数据库获取当前时间作为unix时间戳.
在Mysql中,我可以这样说:
SELECT id,
caregiver_id,
client_id,
week_no,
CURTIME() as Synch_Time
FROM dbo.Visits
Run Code Online (Sandbox Code Playgroud)
但是T-SQL中没有CURTIME()函数
有谁知道解决方案?
谢谢
凯文