diff --git a/platforms/android/app/src/main/assets/www/main.html b/platforms/android/app/src/main/assets/www/main.html
index 6a35e73..8cced49 100644
--- a/platforms/android/app/src/main/assets/www/main.html
+++ b/platforms/android/app/src/main/assets/www/main.html
@@ -135,7 +135,7 @@
                     </div>
                 </li>
             </ul>
-             <ul class="aui-list aui-list-in">
+            <ul class="aui-list aui-list-in">
                 <li class="aui-list-item" id="usersec"  onclick="app.verisonCheck()">
                     <div class="aui-list-item-label-icon">
                         <i class="aui-iconfont aui-icon-info aui-text-info"></i>
@@ -147,6 +147,18 @@
                     </div>
                 </li>
             </ul>
+			<ul class="aui-list aui-list-in">
+			    <li class="aui-list-item" id="share" >
+			        <div class="aui-list-item-label-icon">
+			            <i class="aui-iconfont aui-icon-info aui-text-info"></i>
+			        </div>
+			        <div class="aui-list-item-inner aui-list-item-arrow">
+			            <div class="aui-list-item-title">分享测试</div>
+			            <div class="aui-list-item-right" id="versioncheck">
+			            </div>
+			        </div>
+			    </li>
+			</ul>
             <div style="padding: 20px;margin-top: 40px;">
                 <a href="javascript:app.logout();" class="weui-btn weui-btn_warn">退出登录</a>
             </div>
@@ -175,6 +187,20 @@
 <script type="text/javascript" src="js/server.js"></script>
 <script type="text/javascript" src="js/mainmenu.js"></script>
 <script type="text/javascript">
-
+var share = document.getElementById("share")
+	share.onclick=function(){
+		var args = {};
+		args.client = QQSDK.ClientType.QQ;//QQSDK.ClientType.QQ,QQSDK.ClientType.TIM;
+		args.scene = QQSDK.Scene.QQ;//QQSDK.Scene.QQZone,QQSDK.Scene.Favorite
+		args.url = 'https://cordova.apache.org/';
+		args.title = '这个是 Cordova QQ 新闻分享的标题';
+		args.description = '这个是 Cordova QQ 新闻分享的描述';
+		args.image = 'https://cordova.apache.org/static/img/cordova_bot.png';
+		QQSDK.shareNews(function () {
+		  alert('shareNews success');
+		}, function (failReason) {
+		  alert(failReason);
+		}, args);
+	}
 </script>
 </html>
\ No newline at end of file
diff --git a/platforms/android/app/src/main/java/com/dalicitycard/app/MainActivity.java b/platforms/android/app/src/main/java/com/dalicitycard/app/MainActivity.java
new file mode 100644
index 0000000..7b7fe6b
--- /dev/null
+++ b/platforms/android/app/src/main/java/com/dalicitycard/app/MainActivity.java
@@ -0,0 +1,41 @@
+/*
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you 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.
+ */
+
+package com.dalicitycard.app;
+
+import android.os.Bundle;
+import org.apache.cordova.*;
+
+public class MainActivity extends CordovaActivity
+{
+    @Override
+    public void onCreate(Bundle savedInstanceState)
+    {
+        super.onCreate(savedInstanceState);
+
+        // enable Cordova apps to be started in the background
+        Bundle extras = getIntent().getExtras();
+        if (extras != null && extras.getBoolean("cdvStartInBackground", false)) {
+            moveTaskToBack(true);
+        }
+
+        // Set by <content src="index.html" /> in config.xml
+        loadUrl(launchUrl);
+    }
+}
diff --git a/platforms/android/debug-signing.properties b/platforms/android/debug-signing.properties
index 7fc2a24..92a0361 100644
--- a/platforms/android/debug-signing.properties
+++ b/platforms/android/debug-signing.properties
@@ -1,6 +1,6 @@
 # This file is automatically generated.
 # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
-key.store=/Users/shuwei/works2/cordova/dlapp/release-key.keystore
+key.store=E:\\alipay\\mobile\\release-key.keystore
 key.alias=dlapp-supwisdom
 key.store.password=kingstar
 key.alias.password=kingstar
diff --git a/platforms/android/release-signing.properties b/platforms/android/release-signing.properties
index 7fc2a24..92a0361 100644
--- a/platforms/android/release-signing.properties
+++ b/platforms/android/release-signing.properties
@@ -1,6 +1,6 @@
 # This file is automatically generated.
 # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
-key.store=/Users/shuwei/works2/cordova/dlapp/release-key.keystore
+key.store=E:\\alipay\\mobile\\release-key.keystore
 key.alias=dlapp-supwisdom
 key.store.password=kingstar
 key.alias.password=kingstar
