如何通过Android SQLiteDatabase 创建SQLite数据库视图?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过Android SQLiteDatabase 创建SQLite数据库视图?相关的知识,希望对你有一定的参考价值。

android 中SQliteDatabase数据库使用SQLiteOpenHelper辅助类来创建SQLite数据库视图,如下代码:

create view 表名 as 定义

SQLiteOpenHelper类是一个辅助类,用于创建或打开数据库。

该类的使用方法一般是自定义一个子类,继承自SQLiteOpenHelper,并覆写其中最关键的两个方法:onCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)。当新建一个数据库时会调用前者,一般在里面做一些创建表或视图的操作。数据库版本升级时则会调用后者。

定义好子类后(假如叫SqlHelper),只要调用SqlHelper对象的getReadableDatabase()方法或getWritableDatabase()方法即可返回一个SQLiteDatabase对象。如果是第一次调用,则会创建数据库。随后可使用SQLiteDatabase对象的方法进行数据操作,如:execSQL(), insert(), update(), query(), rawQuery(), delete()等。

PS:通过该方法创建的数据库存放的目录是固定的,其路径为/data/data/packageName/databases/。

参考技术A /正好刚才也遇到了这个问题补充一下答案。
var postArray= new Array();
var temp = new Object();
temp.id='1';
temp.name='test';
postArray.push(temp);
$.ajax(
url:"url",
type:'post',
data:data:JSON.stringify(postArray),
success:function(data)
console.log(data);

);

如何通过 GCM 通过 Windows azure 为特定的 android 设备发送通知?

【中文标题】如何通过 GCM 通过 Windows azure 为特定的 android 设备发送通知?【英文标题】:How to send a notification for a particular android device by GCM through Windows azure? 【发布时间】:2014-01-06 12:54:54 【问题描述】:

我已通过 GCM 注册了 android 设备,并且设备的注册 ID 已在 Windows azure 中注册,这为该设备提供了另一个唯一 ID。现在我的疑问是如何通过 Windows azure 提供的注册 ID(而不是 GCM 注册 ID)仅向一台设备发送通知?我被推荐到以下链接。http://msdn.microsoft.com/en-us/library/windowsazure/dn223273.aspx

在该链接中指定的 URL 如下所示。在这里,我知道命名空间、通知中心和消息,但我必须在哪里提供由 windows azure 提供的设备的唯一注册 ID,以便向该设备发送通知

https://namespace.servicebus.windows.net/NotificationHub/messages/?api-version=2013-08

我在java中使用过以下代码

String strAzureURL = "https://namespaceName.servicebus.windows.net/hubName/testMessage";

                          String strAzureRegistrationId = "Tag1";

                    String strSharedAccessSignature = "MySharedAccessSignature";
                    String strSharedAccessName = "MySharedAccessName";
                    String strAuthorizationToken = URLDecoder.decode(strSharedAccessName+":"+strSharedAccessSignature,"UTF-8");

                    String strAuthWrapFormat = "WRAP access_token=\""+strAuthorizationToken+"\"";

                    String info = null;
                    HttpClient client = new HttpClient();
                    try 
                        GetMethod method = new GetMethod(strAzureURL);
                        method.setRequestHeader("Authorization", strAuthWrapFormat);

                        method.setRequestHeader("ServiceBusNotification-Tags", strAzureRegistrationId);
                        method.setRequestHeader("ServiceBusNotification-Format", "gcm");
                        method.setRequestHeader("Audience","https://namespaceName.servicebus.windows.net");
                        client.executeMethod(method);
                        info = method.getResponseBodyAsString();
                        System.out.println("Response "+info);
 catch (UnknownHostException e1) 
    e1.printStackTrace();
    throw e1;

现在我收到以下错误。

    Response <Error><Code>401</Code>

<Detail>MissingAudience: The provided token does not specify the 'Audience'..TrackingId:75c1d492-3ddf-4d88-84b7-1c2f07d9623b_G5,TimeStamp:1/8/2014 9:57:39 AM</Detail>

</Error>

感谢您的帮助!

【问题讨论】:

【参考方案1】:

看看这个页面:http://msdn.microsoft.com/en-us/library/dn282661.aspx。它包括向 GCM 和 Notification Hubs 注册客户端应用程序的所有步骤。从客户端,它注册到通知中心并将它的“MyTag”设置为标签。您要做的是使用设置为注册 ID 的标签进行注册。所以从客户端:

hub.register(registrationId, registrationId, <Optional Other Tags>);

然后,无论您在何处触发推送通知,您都可以将要作为 ServiceBusNotification-Tags 传递到的注册 ID 传递(如您提供的 REST API 链接所示)。这将导致通知中心仅向已注册该标签的设备发送消息。

【讨论】:

非常感谢。Link 有 C# 应用程序的服务器代码。但我想从 java 应用程序发送特定设备的通知。怎么做?我的疑问在于java的服务器端代码。 通知中心没有 Java 端 SDK,因此您必须使用 Java 调用通知中心的 REST API。根据您提供的链接,向端点发送 POST,然后在 ServiceBusNotification-Tags 中,发送您要发送到的设备的注册 ID。 我使用过 REST 调用,但我不知道在 Windows azure URL 中将特定注册 ID 传递到何处。你能检查更新的问题吗? 查看您引用的 URL 中的文档。它包括 REQUEST HEADERS 部分,其中包括 ServiceBusNotification-Tags。您可以将注册 ID 作为标签传入。您需要使用设备的注册 ID 作为标签向集线器注册(正如我在上面的答案中提到的)。一旦您将 reg ID 注册为标签,对该标签的任何推送都会向下推送到该设备。 我尝试使用标签,但现在我收到一些与“观众”相关的错误。请您检查更新的问题并指导我。谢谢

以上是关于如何通过Android SQLiteDatabase 创建SQLite数据库视图?的主要内容,如果未能解决你的问题,请参考以下文章

安卓基础之Sqlite数据库最最基础操作

如何通过android上的ADB命令通过pc拨打电话?

Android:如何通过蓝牙浏览远程设备文件系统?

如何通过 Android 应用向用户发送短信通知

如何通过zxing-android-embedded在Android中停止连续扫描

如何通过门户向 Android 发送 Azure 推送通知?