diff --git a/src/Notes1/.idea/sonarlint/issuestore/8/c/8c55c3ccc257e5907959013f99656e4c8ec3903e b/src/Notes1/.idea/sonarlint/issuestore/8/c/8c55c3ccc257e5907959013f99656e4c8ec3903e
new file mode 100644
index 0000000..8a51d89
--- /dev/null
+++ b/src/Notes1/.idea/sonarlint/issuestore/8/c/8c55c3ccc257e5907959013f99656e4c8ec3903e
@@ -0,0 +1,2 @@
+
+K	xml:S55948"1Implement permissions on this exported component.(ˆ©…»ùÿÿÿÿ
\ No newline at end of file
diff --git a/src/Notes1/.idea/sonarlint/issuestore/a/d/ad72331a1bed265bb9c0fe838faa74dbf69fce32 b/src/Notes1/.idea/sonarlint/issuestore/a/d/ad72331a1bed265bb9c0fe838faa74dbf69fce32
new file mode 100644
index 0000000..9390065
--- /dev/null
+++ b/src/Notes1/.idea/sonarlint/issuestore/a/d/ad72331a1bed265bb9c0fe838faa74dbf69fce32
@@ -0,0 +1,102 @@
+
+c	java:S112ž"FDefine and throw a dedicated exception instead of using a generic one.(ˆ¥ÉÎ8ÏŽ�˜¿0
+w
+java:S2293Œ"YReplace the type specification in this constructor call with the diamond operator ("<>").(è‰¥ð8ÐŽ�˜¿0
+k
+java:S1192Ò"NDefine a constant instead of duplicating this literal "if_create.txt" 3 times.(Ì¬²8ÒŽ�˜¿0
+s	java:S117§"QRename this local variable to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(”…ë�ÿÿÿÿÿ8ÔŽ�˜¿0
+n	java:S117â"QRename this local variable to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ä›áí8ÔŽ�˜¿0
+s	java:S117ç"QRename this local variable to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ŽßÎþûÿÿÿÿ8ÕŽ�˜¿0
+s	java:S117é"QRename this local variable to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(ÀÇÏ¯üÿÿÿÿ8ÕŽ�˜¿0
+s	java:S117ô"QRename this local variable to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(¦°²¥øÿÿÿÿ8ÕŽ�˜¿0
+>
+java:S1604Œ"(Make this anonymous inner class a lambda(—ÌºV
+?
+java:S1604Ñ"(Make this anonymous inner class a lambda(Î¬¯”
+?
+java:S1604È"(Make this anonymous inner class a lambda(¿Ü´ã
+D
+java:S1604ä"(Make this anonymous inner class a lambda(ˆÐï�øÿÿÿÿ
+F
+java:S1604ì"(Make this anonymous inner class a lambda(øÄì‡8ÖŽ�˜¿0
+F
+java:S1604Ù"(Make this anonymous inner class a lambda(Û±¼ 8ÖŽ�˜¿0
+?
+java:S1604þ"(Make this anonymous inner class a lambda(Î¬¯”
+K
+java:S1604Ü"(Make this anonymous inner class a lambda(ˆÐï�øÿÿÿÿ8×Ž�˜¿0
+F
+java:S1604ä"(Make this anonymous inner class a lambda(øÄì‡8×Ž�˜¿0
+n
+java:S1301¼"KReplace this "switch" statement by "if" statements to increase readability.(×“¾ñùÿÿÿÿ8ØŽ�˜¿0
+l
+java:S2095Ÿ"NUse try-with-resources or close this "FileOutputStream" in a "finally" clause.(á©Úî8¾��˜¿0
+U
+java:S2589¡"7Remove this expression which always evaluates to "true"(åÄ…©8¾��˜¿0
+o	java:S116w"ZRename this field "if_first_create" to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(Ý¥Ã·
+t
+java:S1450w"^Remove the "if_first_create" field and declare it as a local variable in the relevant methods.(Ý¥Ã·
+7
+java:S1116e"Remove this empty statement.(ôŸŽìúÿÿÿÿ
+a
+java:S1124Ž"EReorder the modifiers to comply with the Java Language Specification.(¹úæµûÿÿÿÿ
+[
+java:S1124�"EReorder the modifiers to comply with the Java Language Specification.(ìÑ¾k
+n
+java:S3776§"RRefactor this method to reduce its Cognitive Complexity from 17 to the 15 allowed.(áé–Þÿÿÿÿÿ
+2
+java:S3626¸"Remove this redundant jump.(ûÁÝ…
+2
+java:S3626¼"Remove this redundant jump.(ûÁÝ…
+2
+java:S3626Ð"Remove this redundant jump.(ûÁÝ…
+N
+java:S1135Â"2Complete the task associated to this TODO comment.(ÕÌ�®þÿÿÿÿ
+F
+java:S2093¬"*Change this "try" to a try-with-resources.(¡»¢üùÿÿÿÿ
+o
+java:S1450ô"XRemove the "mMoveMenu" field and declare it as a local variable in the relevant methods.(ž¢—ò
+n
+java:S3252ñ"RUse static access with "android.widget.AbsListView" for "MultiChoiceModeListener".(¦Ûî„úÿÿÿÿ
+N
+java:S1135©"2Complete the task associated to this TODO comment.(» æžÿÿÿÿÿ
+N
+java:S1135®"2Complete the task associated to this TODO comment.(» æžÿÿÿÿÿ
+M
+java:S1874ê"1Remove this use of "getHeight"; it is deprecated.(·¡ªÃýÿÿÿÿ
+8
+java:S1116 "Remove this empty statement.(ôŸŽìúÿÿÿÿ
+p
+java:S3776á"RRefactor this method to reduce its Cognitive Complexity from 20 to the 15 allowed.(ãìîí8á��˜¿0
+F	java:S108è")Either remove or fill this block of code.(žûÊ¥8â��˜¿0
+o
+java:S3776Ñ"RRefactor this method to reduce its Cognitive Complexity from 17 to the 15 allowed.(ÅôÉ#8è��˜¿0
+N
+java:S1135•"2Complete the task associated to this TODO comment.(» æžÿÿÿÿÿ
+e
+java:S1126š"BReplace this if-then-else statement by a single method invocation.(çŽ’¦ýÿÿÿÿ8î��˜¿0
+N
+java:S1135¢"2Complete the task associated to this TODO comment.(» æžÿÿÿÿÿ
+l
+java:S1871»"IThis case's code block is the same as the block for the case on line 683.(øì´÷ûÿÿÿÿ8ð��˜¿0
+p	java:S100¦"NRename this method name to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(µñü‚øÿÿÿÿ8ö��˜¿0
+F
+java:S2093ª"*Change this "try" to a try-with-resources.(¡»¢üùÿÿÿÿ
+k	java:S100Â"NRename this method name to match the regular expression '^[a-z][a-zA-Z0-9]*$'.(©¸˜Á8ÿ��˜¿0
+^	java:S125Ô"<This block of commented-out lines of code should be removed.(Óä§Çúÿÿÿÿ8���˜¿0
+^	java:S125ƒ"<This block of commented-out lines of code should be removed.(Ó”©Öøÿÿÿÿ8„��˜¿0
+Y	java:S125‡"<This block of commented-out lines of code should be removed.(¾è–á8„��˜¿0
+U
+java:S1135‰"2Complete the task associated to this TODO comment.(» æžÿÿÿÿÿ8„��˜¿0
+U
+java:S1135–"2Complete the task associated to this TODO comment.(» æžÿÿÿÿÿ8…��˜¿0
+h
+java:S3776Ÿ"RRefactor this method to reduce its Cognitive Complexity from 28 to the 15 allowed.(ôŒùb
+N
+java:S3398¡"0Move this method into "OnListItemClickListener".(‘ðð¡8‰��˜¿0
+K
+java:S3398Ã"/Move this method into "BackgroundQueryHandler".(—÷õŽüÿÿÿÿ
+C
+java:S3398á"%Move this method into "ModeCallback".(ãìîí8‰��˜¿0
+A
+java:S3398×"%Move this method into "ModeCallback".(“ðÉçýÿÿÿÿ
\ No newline at end of file
diff --git a/src/Notes1/.idea/sonarlint/issuestore/index.pb b/src/Notes1/.idea/sonarlint/issuestore/index.pb
index b8ab56f..202f43c 100644
--- a/src/Notes1/.idea/sonarlint/issuestore/index.pb
+++ b/src/Notes1/.idea/sonarlint/issuestore/index.pb
@@ -10,4 +10,8 @@ i
 l
 <app/src/main/java/net/micode/notes/ui/AlarmInitReceiver.java,0\2\0268ec648e2fc0139b30ed13396174b7392c1ae2
 g
-7app/src/main/java/net/micode/notes/ui/NoteItemData.java,0\8\08c35f02f11c35ae9ebf8db0a482054dfa1cf493
\ No newline at end of file
+7app/src/main/java/net/micode/notes/ui/NoteItemData.java,0\8\08c35f02f11c35ae9ebf8db0a482054dfa1cf493
+l
+<app/src/main/java/net/micode/notes/ui/NotesListActivity.java,a\d\ad72331a1bed265bb9c0fe838faa74dbf69fce32
+P
+ app/src/main/AndroidManifest.xml,8\c\8c55c3ccc257e5907959013f99656e4c8ec3903e
\ No newline at end of file
diff --git a/src/Notes1/.idea/vcs.xml b/src/Notes1/.idea/vcs.xml
new file mode 100644
index 0000000..b2bdec2
--- /dev/null
+++ b/src/Notes1/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/src/Notes1/app/src/main/AndroidManifest.xml b/src/Notes1/app/src/main/AndroidManifest.xml
index 40cb406..59be98f 100644
--- a/src/Notes1/app/src/main/AndroidManifest.xml
+++ b/src/Notes1/app/src/main/AndroidManifest.xml
@@ -25,6 +25,8 @@
 
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
+    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.READ_CONTACTS" />
     <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
diff --git a/src/Notes1/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java b/src/Notes1/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java
index 8753d3d..852e6f5 100644
--- a/src/Notes1/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java
+++ b/src/Notes1/app/src/main/java/net/micode/notes/ui/NoteEditActivity.java
@@ -29,7 +29,13 @@ import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
 import android.graphics.Paint;
+import android.location.Address;
+import android.location.Geocoder;
+import android.location.Location;
+import android.location.LocationListener;
+import android.location.LocationManager;
 import android.os.Bundle;
 import android.preference.PreferenceManager;
 import android.text.Spannable;
@@ -75,6 +81,8 @@ import java.io.IOException;
 import java.io.InputStreamReader;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
@@ -82,6 +90,9 @@ import java.util.regex.Pattern;
 
 public class NoteEditActivity extends Activity implements OnClickListener,
         NoteSettingChangedListener, OnTextViewChangeListener {
+    public static final int LOCATION_CODE = 301;
+    private LocationManager locationManager;
+    private String locationProvider = null;
     private class HeadViewHolder {
         public TextView tvModified;
 
@@ -972,4 +983,116 @@ public class NoteEditActivity extends Activity implements OnClickListener,
     private void showToast(int resId, int duration) {
         Toast.makeText(this, resId, duration).show();
     }
+
+    private void getLocation(){
+        //1.èŽ·å�–ä½�ç½®ç®¡ç�†å™¨
+        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
+
+        //2.èŽ·å�–ä½�ç½®æ��ä¾›å™¨ï¼ŒGPSæˆ–æ˜¯NetWork
+        List<String> providers = locationManager.getProviders(true);
+
+        if (providers.contains(LocationManager.GPS_PROVIDER)) {
+            //å¦‚æžœæ˜¯GPS
+            locationProvider = LocationManager.GPS_PROVIDER;
+            Log.v("TAG", "å®šä½�æ–¹å¼�GPS");
+        } else if (providers.contains(LocationManager.NETWORK_PROVIDER)) {
+            //å¦‚æžœæ˜¯Network
+            locationProvider = LocationManager.NETWORK_PROVIDER;
+            Log.v("TAG", "å®šä½�æ–¹å¼�Network");
+        }else {
+            Toast.makeText(this, "æ²¡æœ‰å�¯ç”¨çš„ä½�ç½®æ��ä¾›å™¨", Toast.LENGTH_SHORT).show();
+            return;
+        }
+
+        Location location = locationManager.getLastKnownLocation(locationProvider);
+        if (location!=null){
+            Toast.makeText(this, location.getLongitude() + " " +
+                    location.getLatitude() + "", Toast.LENGTH_SHORT).show();
+            Log.v("TAG", "èŽ·å�–ä¸Šæ¬¡çš„ä½�ç½®-ç»�çº¬åº¦ï¼š"+location.getLongitude()+"   "+location.getLatitude());
+            getAddress(location);
+
+        }else{
+            //ç›‘è§†åœ°ç�†ä½�ç½®å�˜åŒ–ï¼Œç¬¬äºŒä¸ªå’Œç¬¬ä¸‰ä¸ªå�‚æ•°åˆ†åˆ«ä¸ºæ›´æ–°çš„æœ€çŸ­æ—¶é—´minTimeå’Œæœ€çŸ­è·�ç¦»minDistace
+            locationManager.requestLocationUpdates(locationProvider, 3000, 1,locationListener);
+        }
+    }
+
+
+    public LocationListener locationListener = new LocationListener() {
+        // Providerçš„çŠ¶æ€�åœ¨å�¯ç”¨ã€�æš‚æ—¶ä¸�å�¯ç”¨å’Œæ— æœ�åŠ¡ä¸‰ä¸ªçŠ¶æ€�ç›´æŽ¥åˆ‡æ�¢æ—¶è§¦å�‘æ­¤å‡½æ•°
+        @Override
+        public void onStatusChanged(String provider, int status, Bundle extras) {
+        }
+        // Providerè¢«enableæ—¶è§¦å�‘æ­¤å‡½æ•°ï¼Œæ¯”å¦‚GPSè¢«æ‰“å¼€
+        @Override
+        public void onProviderEnabled(String provider) {
+        }
+        // Providerè¢«disableæ—¶è§¦å�‘æ­¤å‡½æ•°ï¼Œæ¯”å¦‚GPSè¢«å…³é—­
+        @Override
+        public void onProviderDisabled(String provider) {
+        }
+        //å½“å��æ ‡æ”¹å�˜æ—¶è§¦å�‘æ­¤å‡½æ•°ï¼Œå¦‚æžœProviderä¼ è¿›ç›¸å�Œçš„å��æ ‡ï¼Œå®ƒå°±ä¸�ä¼šè¢«è§¦å�‘
+        @Override
+        public void onLocationChanged(Location location) {
+            if (location != null) {
+                //å¦‚æžœä½�ç½®å�‘ç”Ÿå�˜åŒ–ï¼Œé‡�æ–°æ˜¾ç¤ºåœ°ç�†ä½�ç½®ç»�çº¬åº¦
+                Toast.makeText(NoteEditActivity.this, location.getLongitude() + " " +
+                        location.getLatitude() + "", Toast.LENGTH_SHORT).show();
+                Log.v("TAG", "ç›‘è§†åœ°ç�†ä½�ç½®å�˜åŒ–-ç»�çº¬åº¦ï¼š"+location.getLongitude()+"   "+location.getLatitude());
+            }
+        }
+    };
+
+    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
+        switch (requestCode) {
+            case LOCATION_CODE:
+                if(grantResults.length > 0 && grantResults[0] == getPackageManager().PERMISSION_GRANTED
+                        && grantResults[1] == PackageManager.PERMISSION_GRANTED) {
+                    Toast.makeText(this, "ç”³è¯·æ�ƒé™�", Toast.LENGTH_LONG).show();
+                    try {
+                        List<String> providers = locationManager.getProviders(true);
+                        if (providers.contains(LocationManager.NETWORK_PROVIDER)) {
+                            //å¦‚æžœæ˜¯Network
+                            locationProvider = LocationManager.NETWORK_PROVIDER;
+
+                        }else if (providers.contains(LocationManager.GPS_PROVIDER)) {
+                            //å¦‚æžœæ˜¯GPS
+                            locationProvider = LocationManager.GPS_PROVIDER;
+                        }
+                        Location location = locationManager.getLastKnownLocation(locationProvider);
+                        if (location!=null){
+                            Toast.makeText(this, location.getLongitude() + " " +
+                                    location.getLatitude() + "", Toast.LENGTH_SHORT).show();
+                            Log.v("TAG", "èŽ·å�–ä¸Šæ¬¡çš„ä½�ç½®-ç»�çº¬åº¦ï¼š"+location.getLongitude()+"   "+location.getLatitude());
+                        }else{
+                            // ç›‘è§†åœ°ç�†ä½�ç½®å�˜åŒ–ï¼Œç¬¬äºŒä¸ªå’Œç¬¬ä¸‰ä¸ªå�‚æ•°åˆ†åˆ«ä¸ºæ›´æ–°çš„æœ€çŸ­æ—¶é—´minTimeå’Œæœ€çŸ­è·�ç¦»minDistace
+                            locationManager.requestLocationUpdates(locationProvider, 0, 0,locationListener);
+                        }
+
+                    }catch (SecurityException e){
+                        e.printStackTrace();
+                    }
+                } else {
+                    Toast.makeText(this, "ç¼ºå°‘æ�ƒé™�", Toast.LENGTH_LONG).show();
+                    finish();
+                }
+                break;
+        }
+    }
+
+    //èŽ·å�–åœ°å�€ä¿¡æ�¯:åŸŽå¸‚ã€�è¡—é�“ç­‰ä¿¡æ�¯
+    private List<Address> getAddress(Location location) {
+        List<Address> result = null;
+        try {
+            if (location != null) {
+                Geocoder gc = new Geocoder(this, Locale.getDefault());
+                result = gc.getFromLocation(location.getLatitude(), location.getLongitude(), 1);
+                Toast.makeText(this, "èŽ·å�–åœ°å�€ä¿¡æ�¯ï¼š"+result.toString(), Toast.LENGTH_LONG).show();
+                Log.v("TAG", "èŽ·å�–åœ°å�€ä¿¡æ�¯ï¼š"+result.toString());
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return result;
+    }
 }
