如果没有打开经纬度定位权限,怎么样给服务器打开读写权限

2.使用地图API,获取经纬度并传到服务器的可行方法 - CSDN博客
2.使用地图API,获取经纬度并传到服务器的可行方法
使用地图API,获取经纬度并传到服务器的可行方法
一张高德地图搞定用户的位置定位
& & 网上看了很多使用地图API实现位置自动定位的文章, JS代码不一,但效果都一样:获取一张用户自己位置的地图显示在相应的Div上面。而现在,假如说我们想点击已定位的地图上的一个地方,则会把该位置的经纬度从客户端传到服务器,然后将该经纬度通过 Smtp协议,发送给某人的邮箱,那么该怎么做呢?
& & 第一步:通过JS把地图上所点击的位置的经纬度获取到并显示到页面。
& & & & 在我们初始化的地图上加一个click监听AMap.event.addListener(map,'click',getLnglat);当点击地图时则调用getLnglat函数function getLnglat(e){ & &
&var a = e.lnglat.getLng();
&var b = e.lnglat.getLat();&
&document.getElementById(&lnglat&).innerHTML =&您当前经纬度:&+&&br&&+&&br&&+&&+a+&,&+b;},而该函数负责给声明的a,b赋经纬值并在Inglat上显示点击位置的经纬度。现在,我们就从地图上把点击位置的经纬度用JS获取到了,并赋给了a,b。
& & 第二步: 把获取到的经纬度传到服务器。
& & & & & 我们需要在html页面上加入两个隐藏域&input type=&hidden& value=&0& name=&x&/&&input type=&hidden& value=&0& name=&y&/&,然后用JS给隐藏域重新赋值,if(a==undefined){
& &document.getElementById(&lnglat&).innerHTML=&请选择你的坐标!&+&&br&&+&&br&&+&&br&&;
& & & document.all.x.value=a;&
& & & document.all.y.value=b;
& & document.insertForm.submit(); }
& &}。if(a==undefined)判断是否获取到经度,document.insertForm.submit()用JS实现表单的提交。而表单的action只要是指向服务器即可把两个隐藏域的值传递到服务器。
& & &第三步:服务器获取经纬度
& & & & & &double x,声明两个double类型的x,y,用于接收经纬度。写上x,y的set,get方法即可获取到传来的经纬度,当然,应该也可以用request来获取经纬度,不过我没试过。
& & & 以上便是通过地图获取经纬度到服务器的具体方法,方法可能还有缺陷,现在写出来,只是为以后的改进提供基础。
本文已收录于以下专栏:
相关文章推荐
http://blog.csdn.net/totogo2010/article/details/6574858
(全部源码地址:http://download.csdn.net/detail/t...
上篇把界面画出来了, 接下来就是显示里面的功能了,那这篇内容就比较丰富了。
主要有这么几道菜:
1、在地图上弹出泡泡显示信息,并且能相应泡泡的点击时间
2、自动定位当前位置(也就是我...
Android Map Api 使用和开发(2) 定位我的位置、地图弹出泡泡、通过经纬度获取地址
代码我传到csdn资源库了;http://download.csdn.net/detail/to...
(全部源码地址:http://download.csdn.net/detail/totogo  ) 
 上篇把界面画出来了, 接下来就是显示里面的功能了,那这篇内容就比较丰富...
上篇把界面画出来了, 接下来就是显示里面的功能了,那这篇内容就比较丰富了。
主要有这么几道菜:
1、在地图上弹出泡泡显示信息,并且能相应泡泡的点击时间
2、自动定位当前位置(也就是我...
一般百度地图、高德地图等都会提供API接口给我们,我们要使用其地图服务需要注册账号申请个密钥。
百度地图开放平台的网址:百度地图开放平台
注册后去创建个应用申请密钥:
图片中红框中的A...
需求说明:
     百度map api并未公开获取站点坐标经纬度的api接口,通过logger2js分析百度地图api源码,找出获取某条公交线各个站点经纬度的未公开方法。
被分析页面全部代码...
在使用百度api获取当前经纬度的时候,使用api demo,代码一模一样,可就是报错BMapManager这玩意没法实例化,坑我呀
demo上是这么写的:
package com.stgmobil...
转自:/caishuowen/archive//2287669.html
android获取经纬度和地方名称
最近了解到了百度地图的API 为此学习
 //引入  js 
百度地图显示 --&
       div id=&container&
 &...
他的最新文章
讲师:宋宝华
讲师:何宇健
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)基于百度定位SDK的定位服务的实现 - CSDN博客
基于百度定位SDK的定位服务的实现
转载请标明出处:
一、定位模块的需求:我们想知道使用我们应用的用户的大概位置,每隔五分钟上传一次用户当前所在地的经纬度值到服务器端。
二、需求分析
&&&& A、UML流程图如下:
&&&&B、定位服务,功能具体分析:
&&&& &启动方式:手动、开机自启动。
&&&&& 关闭方式:用户在设置里强制停止应用、关闭手机。(用户使用其他软件杀死掉我们的服务,用户重新启动应用服务才会开启。)
&&&&& 1、开机自启动服务,等1分钟后开始检测网络状态和GPS是否开启,并通过通知栏提醒用户。(未开启时,提醒一次,5分钟提醒一次)
&&&&& 2、直接启动应用,立即开始检测网络状态和GPS是否开启,并通过弹Dialog提示用户。若用户不愿意开启网络,即网络不可用时,直接退出应用。
&&&& 3、用户在设置--&应用程序--&正在运行的服务里面手动停止掉服务后,服务自动重启。
&&&& 4、网络检测可用,开始检测GPS。用户不开启GPS时,使用基站定位(WLAN、3G/2G)。
&&&& 5、网络检测可用,启动百度地图定位服务,每隔五分钟确认一次当前我所在的位置,并将经纬度值上传服务器端。
&&& &6、网络检测可用,但是在发送定位数据时,网络断开了,以Toast形式提醒用户。
&&&&&7、网络检测可用,但是在定位过程中,网络断开了,并且目前打开的不是我们的应用(也就是说服务在后台运行),以通知的形式提醒用户。
&&& &8、服务运行过程中,意外停止了。当用户重启应用后,服务重新启动。
&&&& 9、添加了开机自启动后,检测网络和通过通知栏提醒用户当前的网络、GPS状态。
&&&&10、服务运行过程中,网络检测返回的标识的处理。
三、编码实现:
&&&&& 完整源码下载地址:,核心类的源码如下,
&&&&& A、服务类的源码如下:
package com.android.mobile.
import java.io.IOE
import java.io.InputS
import java.util.T
import java.util.TimerT
import android.app.S
import android.content.C
import android.content.I
import android.content.SharedP
import android.os.H
import android.os.IB
import android.os.M
import com.android.mobile.locator.net.HttpR
import com.android.mobile.locator.utils.C
import com.android.mobile.locator.utils.FileU
import com.android.mobile.locator.utils.GPSU
import com.android.mobile.locator.utils.LogU
import com.android.mobile.locator.utils.NetWorkU
import com.android.mobile.locator.utils.NotificationU
import com.android.mobile.locator.utils.ServiceU
import com.baidu.location.BDL
import com.baidu.location.BDLocationL
import com.baidu.location.LocationC
import com.baidu.location.LocationClientO
import com.easi.mobile.locator.R;
* 类名:MobileLocatorService
* 功能描述:定位服务类。
* @author android_ls
* 创建日期:
public class MobileLocatorService extends Service {
* Service action.
public static final String ACTION_MOBILE_LOCATOR_SERVICE = &com.easi.mobile.locator.MobileLocatorService&;
* 间隔时间5分钟
private static final int DELAY_TIME = 5*60*1000;
* 开机一分钟后开始检测网络
private static final int CHECK_NETWORK_DELAY_TIME = 1 * 60 * 1000;
private Context mC
* 定位SDK的核心类
private LocationClient mLocationC
* 定位结果处理器 # class MyLocationListener implements BDLocationListener{}
private MyLocationListener mLocationL
* 通知工具类
private NotificationUtil mNotificationU
* 服务的启动方式,开机自启动/手动启动
private int startingMode = -1;
* 当前网络是否可用的标志
private boolean isOpenNetwork =
* 检测网络的次数(5分钟一次,检测三次)
private int checkNetworkNumber = 0;
private Timer mT
public IBinder onBind(Intent intent) {
public void onCreate() {
LogUtil.e(&--------------MobileLocatorService onCreate()----------------&);
mNotificationUtil = new NotificationUtil(this);
mContext = MobileLocatorService.
// 设置为前台进程,尽量避免被系统干掉。
// MobileLocatorService.this.setForeground(true);
// 初始化定位服务,配置相应参数
initLocationService();
public int onStartCommand(Intent intent, int flags, int startId) {
LogUtil.e(&--------------MobileLocatorService onStartCommand()----------------&);
if (intent != null) {
startingMode = intent.getIntExtra(&startingMode&, -1);
LogUtil.i(&startingMode = & + startingMode);
if (startingMode == Constant.HANDLER_START_SERVICE) {
LogUtil.e(&-------------手动启动---------------&);
// 判断服务是否已开启
boolean isRun = ServiceUtil.isServiceRun(getApplicationContext(), &com.baidu.location.f&);
LogUtil.i(&isRun = & + isRun);
if (isRun == false) {
LogUtil.e(&MobileLocatorService start Location Service&);
// 没启动,开启定位服务
mLocationClient.start();
// 关闭手机,再次开启手机。这种情况下,startingMode的值获取不到。
// 关机重启,这种情况下,startingMode的值可以拿到。
// if (startingMode == Constant.BOOT_START_SERVICE) {
LogUtil.e(&-------------开机自启动---------------&);
checkNetworkNumber++;
// 第一次,1分钟后检测网络
mHandler.postDelayed(new Runnable() {
public void run() {
LogUtil.e(&--------------第一次检测网络---------------&);
checkNetwork();
Message msg = new Message();
msg.arg1 = Constant.CHECK_NETWORK_CONNECT_FLAG;
mHandler.sendMessage(msg);
}, CHECK_NETWORK_DELAY_TIME);
return Service.START_REDELIVER_INTENT;
* 检测网络是否可用
private void checkNetwork() {
// 如果网络不可用,开启GPS就没有意义
if (NetWorkUtil.isNetworkAvailable(mContext)) {
isOpenNetwork =
if (GPSUtil.isOPen(mContext) == false) {
// 通知用户GPS未开启
mNotificationUtil.sendGPSNotification();
LogUtil.i(&MobileLocatorService start Location Service&);
// 开启定位服务
mLocationClient.start();
// 通知用户网络不可用
mNotificationUtil.sendNetworkNotification();
* 初始化定位服务,配置相应参数
private void initLocationService() {
mLocationClient = new LocationClient(this.getApplicationContext());
mLocationListener = new MyLocationListener();
mLocationClient.registerLocationListener(mLocationListener);
LocationClientOption locationOption = new LocationClientOption();
locationOption.setOpenGps(true);
locationOption.setCoorType(&bd09ll&);
locationOption.disableCache(true);
locationOption.setPriority(LocationClientOption.GpsFirst);
locationOption.setScanSpan(DELAY_TIME);
locationOption.setProdName(this.getString(R.string.loaction_prod_name));
mLocationClient.setLocOption(locationOption);
Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
int result = msg.arg1;
switch (result) {
case Constant.CHECK_NETWORK_CONNECT_FLAG:
// 第一检测网络,直接过了。(已打开)
boolean isRun = ServiceUtil.isServiceRun(getApplicationContext(), &com.baidu.location.f&);
LogUtil.i(&isRun = & + isRun);
if (isOpenNetwork && isRun) {
LogUtil.i(&--------------第一次检测网络,直接过了。(已打开)----------------&);
mTimer = new Timer();
mTimer.schedule(new TimerTask() {
public void run() {
checkNetworkNumber++;
LogUtil.i(&Timer checkNetworkNumber = & + checkNetworkNumber);
checkNetwork();
boolean isRun = ServiceUtil.isServiceRun(getApplicationContext(), &com.baidu.location.f&);
if (isOpenNetwork && isRun) {
mNotificationUtil.cancelNotification(Constant.NOTIFICATIO_NETWORK_NOT_OPEN);
mTimer.cancel();
if (checkNetworkNumber == 3) {
LogUtil.e(&--------------第三次检测网络,还未开启,直接退出应用---------&);
// 检查网络,提醒了用户三次依然未开,退出应用。
mNotificationUtil.cancelNotification(Constant.NOTIFICATIO_NETWORK_NOT_OPEN);
mNotificationUtil.cancelNotification(Constant.NOTIFICATIO_GPS_NOT_OPEN);
mTimer.cancel();
// System.gc();
System.exit(0);
}, 0, DELAY_TIME);
case Constant.UPLOAD_LOACTION_SUCCESS:
LogUtil.i(&您当前的位置上传服务器成功!&);
// Toast.makeText(getApplicationContext(), &您当前的位置上传服务器成功!&, Toast.LENGTH_LONG).show();
case Constant.LOCATION_NETWORK_EXCEPTION:
LogUtil.e(&网络异常!请检查您的网络连接。&);
网络异常,没有成功向服务器发起请求。
// Toast.makeText(getApplicationContext(), &网络异常!请检查您的网络连接。&, Toast.LENGTH_LONG).show();
// 通知用户网络不可用
mNotificationUtil.sendNetworkNotification();
case Constant.LOCATION_NETWORK_CONNECT_FAIL:
LogUtil.e(&网络连接失败,请将网络关闭再重新打开试试!&);
// 通知用户网络不可用
mNotificationUtil.sendNetworkNotification();
case Constant.UPLOAD_LOACTION_FAIL:
// Toast.makeText(getApplicationContext(), &您当前的位置上传服务器失败!请查看下你的网络状态。&, Toast.LENGTH_LONG).show();
LogUtil.e(&您当前的位置上传服务器失败!&);
class MyLocationListener implements BDLocationListener {
public void onReceiveLocation(BDLocation location) {
if (location == null) {
LogUtil.i(&BDLocationListener onReceiveLocation()&);
/* location.getLocType()的返回值含义:
61 : GPS定位结果
62 : 扫描整合定位依据失败。此时定位结果无效。
63 : 网络异常,没有成功向服务器发起请求。此时定位结果无效。
65 : 定位缓存的结果。
66 : 离线定位结果。通过requestOfflineLocaiton调用时对应的返回结果
67 : 离线定位失败。通过requestOfflineLocaiton调用时对应的返回结果
68 : 网络连接失败时,查找本地离线定位时对应的返回结果
161: 表示网络定位结果
162~167: 服务端定位失败。*/
int locType = location.getLocType();
longitude = location.getLongitude();
latitude = location.getLatitude();
// TODO 调试使用
StringBuffer sb = new StringBuffer(256);
sb.append(& time : &);
sb.append(location.getTime());
sb.append(&\n error code : &);
sb.append(locType);
sb.append(&\n latitude : &);
sb.append(longitude);
sb.append(&\n longitude : &);
sb.append(latitude);
LogUtil.i(&BDLocationListene & + sb.toString());
if (locType == Constant.LOCATION_GPS || locType == Constant.LOCATION_NETWORK) {
GPS定位结果、网络定位结果
mHandler.post(new Runnable() {
public void run() {
String userId = &bgao&;
int result = send(userId, longitude, latitude);
Message msg = new Message();
msg.arg1 =
mHandler.sendMessage(msg);
} else if (locType == Constant.LOCATION_NETWORK_EXCEPTION || locType == Constant.LOCATION_NETWORK_CONNECT_FAIL) {
网络异常,没有成功向服务器发起请求。
Message msg = new Message();
msg.arg1 = locT
mHandler.sendMessage(msg);
public void onReceivePoi(BDLocation arg0) {
* 向服务器端当前位置的经纬度
* @param usetId 用户ID
* @param longitude 经度值
* @param latitude 纬度值
private int send(String usetId, double longitude, double latitude) {
StringBuffer params = new StringBuffer();
params.append(&event=save&);
params.append(&¤tPointX=&);
params.append(longitude);
params.append(&¤tPointY=&);
params.append(latitude);
params.append(&&userId=&);
params.append(usetId);
InputStream inputStream = HttpRequester.post(Constant.UPLOAD_GPS_URL, params);
if (inputStream != null) {
String result = new String(FileUtil.read(inputStream));
String time = (new java.text.SimpleDateFormat(&yyyy-MM-dd hh:mm:ss&)).format(System.currentTimeMillis());
LogUtil.e(&网络请求返回的结果:result = & + result + &\t 时间:& + time);
if (&Y&.equals(result)) {
} else if (&N&.equals(result)) {
LogUtil.e(&服务器端返回的值与预先商定的不否! &);
LogUtil.e(&网络请求成功,但是返回的数据流为NULL&);
} catch (IOException e) {
LogUtil.e(&IOException 服务器访问失败!&);
e.printStackTrace();
public void onDestroy() {
LogUtil.e(&---------------MobileLocatorService onDestroy()----------------&);
if (mLocationClient != null && mLocationClient.isStarted()) {
mLocationClient.stop();
if (mLocationListener != null) {
mLocationClient.unRegisterLocationListener(mLocationListener);
SharedPreferences sp = mContext.getSharedPreferences(&MobileLocator&, Context.MODE_PRIVATE);
String result = sp.getString(&instruct&, null);
LogUtil.i(&MobileLocatorService onDestroy() result = & + result);
if (&exit&.equals(result)) {
sp.edit().putString(&instruct&, &true&).commit();
LogUtil.e(&---------------MobileLocatorService onDestroy()-----------1-----&);
System.exit(0);
LogUtil.e(&---------------MobileLocatorService onDestroy()---------2-------&);
// 销毁时重新启动Service
Intent intent = new Intent(ACTION_MOBILE_LOCATOR_SERVICE);
intent.putExtra(&startingMode&, startingMode);
this.startService(intent);
&&&&&& B、启动时系统发出的广播的接收器类源码:
package com.android.mobile.
import android.content.BroadcastR
import android.content.C
import android.content.I
import com.android.mobile.locator.utils.C
import com.android.mobile.locator.utils.LogU
* 类名:BootBroadcastReceiver
* 功能描述:启动时系统发出的广播的接收器
* #&uses-permission android:name=&android.permission.RECEIVE_BOOT_COMPLETED& /&
* @author android_ls
public class BootBroadcastReceiver extends BroadcastReceiver {
private static final String ACTION_BOOT = &android.intent.action.BOOT_COMPLETED&;
public void onReceive(Context context, Intent intent) {
LogUtil.i(&Boot this system , BootBroadcastReceiver onReceive()&);
if (intent.getAction().equals(ACTION_BOOT)) {
LogUtil.i(&BootBroadcastReceiver onReceive(), MobileLocatorService Start&);
Intent mIntent = new Intent(MobileLocatorService.ACTION_MOBILE_LOCATOR_SERVICE);
mIntent.putExtra(&startingMode&, Constant.BOOT_START_SERVICE);
context.startService(mIntent);
&&&&& C、关机时系统发出的广播的接收器类源码:
package com.android.mobile.
import android.content.BroadcastR
import android.content.C
import android.content.I
import android.content.SharedP
import com.android.mobile.locator.utils.LogU
* 类名:ShutdownBroadcastReceiver
* 功能描述:关机时系统发出的广播的接收器
* @author android_ls
public class ShutdownBroadcastReceiver extends BroadcastReceiver {
private static final String ACTION_SHUTDOWN = &android.intent.action.ACTION_SHUTDOWN&;
public void onReceive(Context context, Intent intent) {
LogUtil.e(&Shut down this system, ShutdownBroadcastReceiver onReceive()&);
if (intent.getAction().equals(ACTION_SHUTDOWN)) {
LogUtil.i(&ShutdownBroadcastReceiver onReceive(), MobileLocatorService Stop&);
SharedPreferences sp = context.getSharedPreferences(&MobileLocator&, Context.MODE_PRIVATE);
sp.edit().putString(&instruct&, &exit&).commit();
context.stopService(new Intent(MobileLocatorService.ACTION_MOBILE_LOCATOR_SERVICE));
&&&&&& D、在AndroidManifest.xml文件中的配置:
&?xml version=&1.0& encoding=&utf-8&?&
&manifest xmlns:android=&/apk/res/android&
package=&com.easi.mobile.locator&
android:versionCode=&1&
android:versionName=&1.0& &
&uses-sdk android:minSdkVersion=&8& /&
android:sharedUserId=&android.uid.system&
android:killAfterRestore=&true&
android:process=&:remote&
android:enabled=&true&
&application
android:allowClearUserData=&false&
android:icon=&@drawable/ic_launcher&
android:label=&@string/app_name& &
android:label=&@string/app_name&
android:name=&com.android.mobile.locator.MobileLocatorActivity& &
&intent-filter &
&action android:name=&android.intent.action.MAIN& /&
&category android:name=&android.intent.category.LAUNCHER& /&
&/intent-filter&
&/activity&
android:enabled=&true&
android:name=&com.android.mobile.locator.MobileLocatorService&
android:process=&:remote& &
&intent-filter &
&action android:name=&com.easi.mobile.locator.MobileLocatorService& /&
&/intent-filter&
&/service&
android:enabled=&true&
android:name=&com.baidu.location.f&
android:process=&:remote& /&
&receiver android:name=&com.android.mobile.locator.BootBroadcastReceiver& &
&intent-filter &
&action android:name=&android.intent.action.BOOT_COMPLETED& /&
&category android:name=&android.intent.category.HOME& /& 
&/intent-filter&
&/receiver&
&receiver android:name=&com.android.mobile.locator.ShutdownBroadcastReceiver& &
&intent-filter &
&action android:name=&android.intent.action.ACTION_SHUTDOWN& /&
&category android:name=&android.intent.category.HOME& /&
&/intent-filter&
&/receiver&
&/application&
&!-- 授予应用程序访问系统开机事件的权限 --&
&uses-permission android:name=&android.permission.RECEIVE_BOOT_COMPLETED& /&
&uses-permission android:name=&android.permission.READ_PHONE_STATE& /&
&uses-permission android:name=&android.permission.ACCESS_COARSE_LOCATION& /&
&uses-permission android:name=&android.permission.ACCESS_FINE_LOCATION& /&
&uses-permission android:name=&android.permission.ACCESS_WIFI_STATE& /&
&uses-permission android:name=&android.permission.ACCESS_NETWORK_STATE& /&
&uses-permission android:name=&android.permission.CHANGE_WIFI_STATE& /&
&uses-permission android:name=&android.permission.READ_PHONE_STATE& /&
&uses-permission android:name=&android.permission.WRITE_EXTERNAL_STORAGE& /&
&uses-permission android:name=&android.permission.MOUNT_UNMOUNT_FILESYSTEMS& /&
&uses-permission android:name=&android.permission.READ_LOGS& /&
&uses-permission android:name=&android.permission.INTERNET& /&
&uses-permission android:name=&android.permission.WRITE_SETTINGS& /&
&/manifest&
&&&& &前段时间由于忙于公司的项目,所以好久没更新博客了,后面我会继续更新的,谢谢大家的支持!
本文已收录于以下专栏:
相关文章推荐
最近在发布应用的时候被苹果拒绝了,原因是我的应用在iPhone5上没有铺满屏幕显示画面,而是在应用画面的上下各有一条黑色,导致应用画面没有铺满iPhone5的屏幕。
转载请标明出处:http://blog.csdn.net/android_ls/article/details/
       在编写IOS应用程序的过程中,我一直都是使用iPh...
framework-res.apk
com.baidu.map.location
Android定位服务融合了GPS定位、移动通信、导航等多种技术,提供与空间位置相关的综合应用服务。近些年来,基于位置的服务发展更为迅速,涉及商务、医疗、工作和生活的各个方面,为用户提供定位、追踪和敏...
LocationActivity:
package com.baidu.location.
import com.baidu.baidulocationdemo.R;
import co...
公司项目有用到百度地图,登录的时候需要定位一次,获取登录的地址信息,在手机无法连接外网的情况,也就无法访问百度定位服务器的时候,定位的回调函数要30秒以上才能返回结果,于是去仔细查百度api,发现没有...
1.控制台输出:called unimplemented OpenGL ES API
调用了未实现的OpenGL ES API函数,一般由于导入的第三方库如地图库,里面有用到OpenGL,但是模拟器...
这一篇文章主要讲解的是百度地图的定位功能,然后还有MyLocationOverlay和PopupOverlay两个地图覆盖物的使用,Overlay是“图层”或“覆盖物”的意思,MyLocationOv...
andorid:百度地图定位:第一次定位成功之后 再次定位一直返回:505 错误locType:505locType description:NetWork location failed becau...
他的最新文章
讲师:宋宝华
讲师:何宇健
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)}

我要回帖

更多关于 文件服务器权限分配表 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信