You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
318 lines
26 KiB
318 lines
26 KiB
<html>
|
|
<head>
|
|
<title>DataUtils.java</title>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<style type="text/css">
|
|
.s0 { color: #8c8c8c; font-style: italic;}
|
|
.s1 { color: #080808;}
|
|
.s2 { color: #0033b3;}
|
|
.s3 { color: #067d17;}
|
|
.s4 { color: #1750eb;}
|
|
.s5 { color: #8c8c8c; font-style: italic;}
|
|
.s6 { color: #0037a6;}
|
|
</style>
|
|
</head>
|
|
<body bgcolor="#ffffff">
|
|
<table CELLSPACING=0 CELLPADDING=5 COLS=1 WIDTH="100%" BGCOLOR="#c0c0c0" >
|
|
<tr><td><center>
|
|
<font face="Arial, Helvetica" color="#000000">
|
|
DataUtils.java</font>
|
|
</center></td></tr></table>
|
|
<pre><span class="s0">/*
|
|
* Copyright (c) 2010-2011, The MiCode Open Source Community (www.micode.net)
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/</span>
|
|
|
|
<span class="s2">package </span><span class="s1">net.micode.notes.tool;</span>
|
|
|
|
<span class="s2">import </span><span class="s1">android.content.ContentProviderOperation;</span>
|
|
<span class="s2">import </span><span class="s1">android.content.ContentProviderResult;</span>
|
|
<span class="s2">import </span><span class="s1">android.content.ContentResolver;</span>
|
|
<span class="s2">import </span><span class="s1">android.content.ContentUris;</span>
|
|
<span class="s2">import </span><span class="s1">android.content.ContentValues;</span>
|
|
<span class="s2">import </span><span class="s1">android.content.OperationApplicationException;</span>
|
|
<span class="s2">import </span><span class="s1">android.database.Cursor;</span>
|
|
<span class="s2">import </span><span class="s1">android.os.RemoteException;</span>
|
|
<span class="s2">import </span><span class="s1">android.util.Log;</span>
|
|
|
|
<span class="s2">import </span><span class="s1">net.micode.notes.data.Notes;</span>
|
|
<span class="s2">import </span><span class="s1">net.micode.notes.data.Notes.CallNote;</span>
|
|
<span class="s2">import </span><span class="s1">net.micode.notes.data.Notes.NoteColumns;</span>
|
|
<span class="s2">import </span><span class="s1">net.micode.notes.ui.NotesListAdapter.AppWidgetAttribute;</span>
|
|
|
|
<span class="s2">import </span><span class="s1">java.util.ArrayList;</span>
|
|
<span class="s2">import </span><span class="s1">java.util.HashSet;</span>
|
|
|
|
|
|
<span class="s2">public class </span><span class="s1">DataUtils {</span>
|
|
<span class="s2">public static final </span><span class="s1">String TAG = </span><span class="s3">"DataUtils"</span><span class="s1">;</span>
|
|
<span class="s2">public static boolean </span><span class="s1">batchDeleteNotes(ContentResolver resolver, HashSet<Long> ids) {</span>
|
|
<span class="s2">if </span><span class="s1">(ids == </span><span class="s2">null</span><span class="s1">) {</span>
|
|
<span class="s1">Log.d(TAG, </span><span class="s3">"the ids is null"</span><span class="s1">);</span>
|
|
<span class="s2">return true</span><span class="s1">;</span>
|
|
<span class="s1">}</span>
|
|
<span class="s2">if </span><span class="s1">(ids.size() == </span><span class="s4">0</span><span class="s1">) {</span>
|
|
<span class="s1">Log.d(TAG, </span><span class="s3">"no id is in the hashset"</span><span class="s1">);</span>
|
|
<span class="s2">return true</span><span class="s1">;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s1">ArrayList<ContentProviderOperation> operationList = </span><span class="s2">new </span><span class="s1">ArrayList<ContentProviderOperation>();</span>
|
|
<span class="s2">for </span><span class="s1">(</span><span class="s2">long </span><span class="s1">id : ids) {</span>
|
|
<span class="s2">if</span><span class="s1">(id == Notes.ID_ROOT_FOLDER) {</span>
|
|
<span class="s1">Log.e(TAG, </span><span class="s3">"Don't delete system folder root"</span><span class="s1">);</span>
|
|
<span class="s2">continue</span><span class="s1">;</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">ContentProviderOperation.Builder builder = ContentProviderOperation</span>
|
|
<span class="s1">.newDelete(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id));</span>
|
|
<span class="s1">operationList.add(builder.build());</span>
|
|
<span class="s1">}</span>
|
|
<span class="s2">try </span><span class="s1">{</span>
|
|
<span class="s1">ContentProviderResult[] results = resolver.applyBatch(Notes.AUTHORITY, operationList);</span>
|
|
<span class="s2">if </span><span class="s1">(results == </span><span class="s2">null </span><span class="s1">|| results.length == </span><span class="s4">0 </span><span class="s1">|| results[</span><span class="s4">0</span><span class="s1">] == </span><span class="s2">null</span><span class="s1">) {</span>
|
|
<span class="s1">Log.d(TAG, </span><span class="s3">"delete notes failed, ids:" </span><span class="s1">+ ids.toString());</span>
|
|
<span class="s2">return false</span><span class="s1">;</span>
|
|
<span class="s1">}</span>
|
|
<span class="s2">return true</span><span class="s1">;</span>
|
|
<span class="s1">} </span><span class="s2">catch </span><span class="s1">(RemoteException e) {</span>
|
|
<span class="s1">Log.e(TAG, String.format(</span><span class="s3">"%s: %s"</span><span class="s1">, e.toString(), e.getMessage()));</span>
|
|
<span class="s1">} </span><span class="s2">catch </span><span class="s1">(OperationApplicationException e) {</span>
|
|
<span class="s1">Log.e(TAG, String.format(</span><span class="s3">"%s: %s"</span><span class="s1">, e.toString(), e.getMessage()));</span>
|
|
<span class="s1">}</span>
|
|
<span class="s2">return false</span><span class="s1">;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public static void </span><span class="s1">moveNoteToFoler(ContentResolver resolver, </span><span class="s2">long </span><span class="s1">id, </span><span class="s2">long </span><span class="s1">srcFolderId, </span><span class="s2">long </span><span class="s1">desFolderId) {</span>
|
|
<span class="s1">ContentValues values = </span><span class="s2">new </span><span class="s1">ContentValues();</span>
|
|
<span class="s1">values.put(NoteColumns.PARENT_ID, desFolderId);</span>
|
|
<span class="s1">values.put(NoteColumns.ORIGIN_PARENT_ID, srcFolderId);</span>
|
|
<span class="s1">values.put(NoteColumns.LOCAL_MODIFIED, </span><span class="s4">1</span><span class="s1">);</span>
|
|
<span class="s1">resolver.update(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id), values, </span><span class="s2">null</span><span class="s1">, </span><span class="s2">null</span><span class="s1">);</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public static boolean </span><span class="s1">batchMoveToFolder(ContentResolver resolver, HashSet<Long> ids,</span>
|
|
<span class="s2">long </span><span class="s1">folderId) {</span>
|
|
<span class="s2">if </span><span class="s1">(ids == </span><span class="s2">null</span><span class="s1">) {</span>
|
|
<span class="s1">Log.d(TAG, </span><span class="s3">"the ids is null"</span><span class="s1">);</span>
|
|
<span class="s2">return true</span><span class="s1">;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s1">ArrayList<ContentProviderOperation> operationList = </span><span class="s2">new </span><span class="s1">ArrayList<ContentProviderOperation>();</span>
|
|
<span class="s2">for </span><span class="s1">(</span><span class="s2">long </span><span class="s1">id : ids) {</span>
|
|
<span class="s1">ContentProviderOperation.Builder builder = ContentProviderOperation</span>
|
|
<span class="s1">.newUpdate(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, id));</span>
|
|
<span class="s1">builder.withValue(NoteColumns.PARENT_ID, folderId);</span>
|
|
<span class="s1">builder.withValue(NoteColumns.LOCAL_MODIFIED, </span><span class="s4">1</span><span class="s1">);</span>
|
|
<span class="s1">operationList.add(builder.build());</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">try </span><span class="s1">{</span>
|
|
<span class="s1">ContentProviderResult[] results = resolver.applyBatch(Notes.AUTHORITY, operationList);</span>
|
|
<span class="s2">if </span><span class="s1">(results == </span><span class="s2">null </span><span class="s1">|| results.length == </span><span class="s4">0 </span><span class="s1">|| results[</span><span class="s4">0</span><span class="s1">] == </span><span class="s2">null</span><span class="s1">) {</span>
|
|
<span class="s1">Log.d(TAG, </span><span class="s3">"delete notes failed, ids:" </span><span class="s1">+ ids.toString());</span>
|
|
<span class="s2">return false</span><span class="s1">;</span>
|
|
<span class="s1">}</span>
|
|
<span class="s2">return true</span><span class="s1">;</span>
|
|
<span class="s1">} </span><span class="s2">catch </span><span class="s1">(RemoteException e) {</span>
|
|
<span class="s1">Log.e(TAG, String.format(</span><span class="s3">"%s: %s"</span><span class="s1">, e.toString(), e.getMessage()));</span>
|
|
<span class="s1">} </span><span class="s2">catch </span><span class="s1">(OperationApplicationException e) {</span>
|
|
<span class="s1">Log.e(TAG, String.format(</span><span class="s3">"%s: %s"</span><span class="s1">, e.toString(), e.getMessage()));</span>
|
|
<span class="s1">}</span>
|
|
<span class="s2">return false</span><span class="s1">;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s0">/**</span>
|
|
<span class="s0">* Get the all folder count except system folders {</span><span class="s5">@link </span><span class="s0">Notes#TYPE_SYSTEM}}</span>
|
|
<span class="s0">*/</span>
|
|
<span class="s2">public static int </span><span class="s1">getUserFolderCount(ContentResolver resolver) {</span>
|
|
<span class="s1">Cursor cursor =resolver.query(Notes.CONTENT_NOTE_URI,</span>
|
|
<span class="s2">new </span><span class="s1">String[] { </span><span class="s3">"COUNT(*)" </span><span class="s1">},</span>
|
|
<span class="s1">NoteColumns.TYPE + </span><span class="s3">"=? AND " </span><span class="s1">+ NoteColumns.PARENT_ID + </span><span class="s3">"<>?"</span><span class="s1">,</span>
|
|
<span class="s2">new </span><span class="s1">String[] { String.valueOf(Notes.TYPE_FOLDER), String.valueOf(Notes.ID_TRASH_FOLER)},</span>
|
|
<span class="s2">null</span><span class="s1">);</span>
|
|
|
|
<span class="s2">int </span><span class="s1">count = </span><span class="s4">0</span><span class="s1">;</span>
|
|
<span class="s2">if</span><span class="s1">(cursor != </span><span class="s2">null</span><span class="s1">) {</span>
|
|
<span class="s2">if</span><span class="s1">(cursor.moveToFirst()) {</span>
|
|
<span class="s2">try </span><span class="s1">{</span>
|
|
<span class="s1">count = cursor.getInt(</span><span class="s4">0</span><span class="s1">);</span>
|
|
<span class="s1">} </span><span class="s2">catch </span><span class="s1">(IndexOutOfBoundsException e) {</span>
|
|
<span class="s1">Log.e(TAG, </span><span class="s3">"get folder count failed:" </span><span class="s1">+ e.toString());</span>
|
|
<span class="s1">} </span><span class="s2">finally </span><span class="s1">{</span>
|
|
<span class="s1">cursor.close();</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">}</span>
|
|
<span class="s2">return </span><span class="s1">count;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public static boolean </span><span class="s1">visibleInNoteDatabase(ContentResolver resolver, </span><span class="s2">long </span><span class="s1">noteId, </span><span class="s2">int </span><span class="s1">type) {</span>
|
|
<span class="s1">Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId),</span>
|
|
<span class="s2">null</span><span class="s1">,</span>
|
|
<span class="s1">NoteColumns.TYPE + </span><span class="s3">"=? AND " </span><span class="s1">+ NoteColumns.PARENT_ID + </span><span class="s3">"<>" </span><span class="s1">+ Notes.ID_TRASH_FOLER,</span>
|
|
<span class="s2">new </span><span class="s1">String [] {String.valueOf(type)},</span>
|
|
<span class="s2">null</span><span class="s1">);</span>
|
|
|
|
<span class="s2">boolean </span><span class="s1">exist = </span><span class="s2">false</span><span class="s1">;</span>
|
|
<span class="s2">if </span><span class="s1">(cursor != </span><span class="s2">null</span><span class="s1">) {</span>
|
|
<span class="s2">if </span><span class="s1">(cursor.getCount() > </span><span class="s4">0</span><span class="s1">) {</span>
|
|
<span class="s1">exist = </span><span class="s2">true</span><span class="s1">;</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">cursor.close();</span>
|
|
<span class="s1">}</span>
|
|
<span class="s2">return </span><span class="s1">exist;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public static boolean </span><span class="s1">existInNoteDatabase(ContentResolver resolver, </span><span class="s2">long </span><span class="s1">noteId) {</span>
|
|
<span class="s1">Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_NOTE_URI, noteId),</span>
|
|
<span class="s2">null</span><span class="s1">, </span><span class="s2">null</span><span class="s1">, </span><span class="s2">null</span><span class="s1">, </span><span class="s2">null</span><span class="s1">);</span>
|
|
|
|
<span class="s2">boolean </span><span class="s1">exist = </span><span class="s2">false</span><span class="s1">;</span>
|
|
<span class="s2">if </span><span class="s1">(cursor != </span><span class="s2">null</span><span class="s1">) {</span>
|
|
<span class="s2">if </span><span class="s1">(cursor.getCount() > </span><span class="s4">0</span><span class="s1">) {</span>
|
|
<span class="s1">exist = </span><span class="s2">true</span><span class="s1">;</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">cursor.close();</span>
|
|
<span class="s1">}</span>
|
|
<span class="s2">return </span><span class="s1">exist;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public static boolean </span><span class="s1">existInDataDatabase(ContentResolver resolver, </span><span class="s2">long </span><span class="s1">dataId) {</span>
|
|
<span class="s1">Cursor cursor = resolver.query(ContentUris.withAppendedId(Notes.CONTENT_DATA_URI, dataId),</span>
|
|
<span class="s2">null</span><span class="s1">, </span><span class="s2">null</span><span class="s1">, </span><span class="s2">null</span><span class="s1">, </span><span class="s2">null</span><span class="s1">);</span>
|
|
|
|
<span class="s2">boolean </span><span class="s1">exist = </span><span class="s2">false</span><span class="s1">;</span>
|
|
<span class="s2">if </span><span class="s1">(cursor != </span><span class="s2">null</span><span class="s1">) {</span>
|
|
<span class="s2">if </span><span class="s1">(cursor.getCount() > </span><span class="s4">0</span><span class="s1">) {</span>
|
|
<span class="s1">exist = </span><span class="s2">true</span><span class="s1">;</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">cursor.close();</span>
|
|
<span class="s1">}</span>
|
|
<span class="s2">return </span><span class="s1">exist;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public static boolean </span><span class="s1">checkVisibleFolderName(ContentResolver resolver, String name) {</span>
|
|
<span class="s1">Cursor cursor = resolver.query(Notes.CONTENT_NOTE_URI, </span><span class="s2">null</span><span class="s1">,</span>
|
|
<span class="s1">NoteColumns.TYPE + </span><span class="s3">"=" </span><span class="s1">+ Notes.TYPE_FOLDER +</span>
|
|
<span class="s3">" AND " </span><span class="s1">+ NoteColumns.PARENT_ID + </span><span class="s3">"<>" </span><span class="s1">+ Notes.ID_TRASH_FOLER +</span>
|
|
<span class="s3">" AND " </span><span class="s1">+ NoteColumns.SNIPPET + </span><span class="s3">"=?"</span><span class="s1">,</span>
|
|
<span class="s2">new </span><span class="s1">String[] { name }, </span><span class="s2">null</span><span class="s1">);</span>
|
|
<span class="s2">boolean </span><span class="s1">exist = </span><span class="s2">false</span><span class="s1">;</span>
|
|
<span class="s2">if</span><span class="s1">(cursor != </span><span class="s2">null</span><span class="s1">) {</span>
|
|
<span class="s2">if</span><span class="s1">(cursor.getCount() > </span><span class="s4">0</span><span class="s1">) {</span>
|
|
<span class="s1">exist = </span><span class="s2">true</span><span class="s1">;</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">cursor.close();</span>
|
|
<span class="s1">}</span>
|
|
<span class="s2">return </span><span class="s1">exist;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public static </span><span class="s1">HashSet<AppWidgetAttribute> getFolderNoteWidget(ContentResolver resolver, </span><span class="s2">long </span><span class="s1">folderId) {</span>
|
|
<span class="s1">Cursor c = resolver.query(Notes.CONTENT_NOTE_URI,</span>
|
|
<span class="s2">new </span><span class="s1">String[] { NoteColumns.WIDGET_ID, NoteColumns.WIDGET_TYPE },</span>
|
|
<span class="s1">NoteColumns.PARENT_ID + </span><span class="s3">"=?"</span><span class="s1">,</span>
|
|
<span class="s2">new </span><span class="s1">String[] { String.valueOf(folderId) },</span>
|
|
<span class="s2">null</span><span class="s1">);</span>
|
|
|
|
<span class="s1">HashSet<AppWidgetAttribute> set = </span><span class="s2">null</span><span class="s1">;</span>
|
|
<span class="s2">if </span><span class="s1">(c != </span><span class="s2">null</span><span class="s1">) {</span>
|
|
<span class="s2">if </span><span class="s1">(c.moveToFirst()) {</span>
|
|
<span class="s1">set = </span><span class="s2">new </span><span class="s1">HashSet<AppWidgetAttribute>();</span>
|
|
<span class="s2">do </span><span class="s1">{</span>
|
|
<span class="s2">try </span><span class="s1">{</span>
|
|
<span class="s1">AppWidgetAttribute widget = </span><span class="s2">new </span><span class="s1">AppWidgetAttribute();</span>
|
|
<span class="s1">widget.widgetId = c.getInt(</span><span class="s4">0</span><span class="s1">);</span>
|
|
<span class="s1">widget.widgetType = c.getInt(</span><span class="s4">1</span><span class="s1">);</span>
|
|
<span class="s1">set.add(widget);</span>
|
|
<span class="s1">} </span><span class="s2">catch </span><span class="s1">(IndexOutOfBoundsException e) {</span>
|
|
<span class="s1">Log.e(TAG, e.toString());</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">} </span><span class="s2">while </span><span class="s1">(c.moveToNext());</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">c.close();</span>
|
|
<span class="s1">}</span>
|
|
<span class="s2">return </span><span class="s1">set;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public static </span><span class="s1">String getCallNumberByNoteId(ContentResolver resolver, </span><span class="s2">long </span><span class="s1">noteId) {</span>
|
|
<span class="s1">Cursor cursor = resolver.query(Notes.CONTENT_DATA_URI,</span>
|
|
<span class="s2">new </span><span class="s1">String [] { CallNote.PHONE_NUMBER },</span>
|
|
<span class="s1">CallNote.NOTE_ID + </span><span class="s3">"=? AND " </span><span class="s1">+ CallNote.MIME_TYPE + </span><span class="s3">"=?"</span><span class="s1">,</span>
|
|
<span class="s2">new </span><span class="s1">String [] { String.valueOf(noteId), CallNote.CONTENT_ITEM_TYPE },</span>
|
|
<span class="s2">null</span><span class="s1">);</span>
|
|
|
|
<span class="s2">if </span><span class="s1">(cursor != </span><span class="s2">null </span><span class="s1">&& cursor.moveToFirst()) {</span>
|
|
<span class="s2">try </span><span class="s1">{</span>
|
|
<span class="s2">return </span><span class="s1">cursor.getString(</span><span class="s4">0</span><span class="s1">);</span>
|
|
<span class="s1">} </span><span class="s2">catch </span><span class="s1">(IndexOutOfBoundsException e) {</span>
|
|
<span class="s1">Log.e(TAG, </span><span class="s3">"Get call number fails " </span><span class="s1">+ e.toString());</span>
|
|
<span class="s1">} </span><span class="s2">finally </span><span class="s1">{</span>
|
|
<span class="s1">cursor.close();</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">}</span>
|
|
<span class="s2">return </span><span class="s3">""</span><span class="s1">;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public static long </span><span class="s1">getNoteIdByPhoneNumberAndCallDate(ContentResolver resolver, String phoneNumber, </span><span class="s2">long </span><span class="s1">callDate) {</span>
|
|
<span class="s1">Cursor cursor = resolver.query(Notes.CONTENT_DATA_URI,</span>
|
|
<span class="s2">new </span><span class="s1">String [] { CallNote.NOTE_ID },</span>
|
|
<span class="s1">CallNote.CALL_DATE + </span><span class="s3">"=? AND " </span><span class="s1">+ CallNote.MIME_TYPE + </span><span class="s3">"=? AND PHONE_NUMBERS_EQUAL("</span>
|
|
<span class="s1">+ CallNote.PHONE_NUMBER + </span><span class="s3">",?)"</span><span class="s1">,</span>
|
|
<span class="s2">new </span><span class="s1">String [] { String.valueOf(callDate), CallNote.CONTENT_ITEM_TYPE, phoneNumber },</span>
|
|
<span class="s2">null</span><span class="s1">);</span>
|
|
|
|
<span class="s2">if </span><span class="s1">(cursor != </span><span class="s2">null</span><span class="s1">) {</span>
|
|
<span class="s2">if </span><span class="s1">(cursor.moveToFirst()) {</span>
|
|
<span class="s2">try </span><span class="s1">{</span>
|
|
<span class="s2">return </span><span class="s1">cursor.getLong(</span><span class="s4">0</span><span class="s1">);</span>
|
|
<span class="s1">} </span><span class="s2">catch </span><span class="s1">(IndexOutOfBoundsException e) {</span>
|
|
<span class="s1">Log.e(TAG, </span><span class="s3">"Get call note id fails " </span><span class="s1">+ e.toString());</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">cursor.close();</span>
|
|
<span class="s1">}</span>
|
|
<span class="s2">return </span><span class="s4">0</span><span class="s1">;</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public static </span><span class="s1">String getSnippetById(ContentResolver resolver, </span><span class="s2">long </span><span class="s1">noteId) {</span>
|
|
<span class="s1">Cursor cursor = resolver.query(Notes.CONTENT_NOTE_URI,</span>
|
|
<span class="s2">new </span><span class="s1">String [] { NoteColumns.SNIPPET },</span>
|
|
<span class="s1">NoteColumns.ID + </span><span class="s3">"=?"</span><span class="s1">,</span>
|
|
<span class="s2">new </span><span class="s1">String [] { String.valueOf(noteId)},</span>
|
|
<span class="s2">null</span><span class="s1">);</span>
|
|
|
|
<span class="s2">if </span><span class="s1">(cursor != </span><span class="s2">null</span><span class="s1">) {</span>
|
|
<span class="s1">String snippet = </span><span class="s3">""</span><span class="s1">;</span>
|
|
<span class="s2">if </span><span class="s1">(cursor.moveToFirst()) {</span>
|
|
<span class="s1">snippet = cursor.getString(</span><span class="s4">0</span><span class="s1">);</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">cursor.close();</span>
|
|
<span class="s2">return </span><span class="s1">snippet;</span>
|
|
<span class="s1">}</span>
|
|
<span class="s2">throw new </span><span class="s1">IllegalArgumentException(</span><span class="s3">"Note is not found with id: " </span><span class="s1">+ noteId);</span>
|
|
<span class="s1">}</span>
|
|
|
|
<span class="s2">public static </span><span class="s1">String getFormattedSnippet(String snippet) {</span>
|
|
<span class="s2">if </span><span class="s1">(snippet != </span><span class="s2">null</span><span class="s1">) {</span>
|
|
<span class="s1">snippet = snippet.trim();</span>
|
|
<span class="s2">int </span><span class="s1">index = snippet.indexOf(</span><span class="s3">'</span><span class="s6">\n</span><span class="s3">'</span><span class="s1">);</span>
|
|
<span class="s2">if </span><span class="s1">(index != -</span><span class="s4">1</span><span class="s1">) {</span>
|
|
<span class="s1">snippet = snippet.substring(</span><span class="s4">0</span><span class="s1">, index);</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">}</span>
|
|
<span class="s2">return </span><span class="s1">snippet;</span>
|
|
<span class="s1">}</span>
|
|
<span class="s1">}</span>
|
|
</pre>
|
|
</body>
|
|
</html> |