• Category Archives: 未分类

uniapp自定义入口Activity并进行交互

第一步:首先新建自己的MainActivity

package cn.com.sway.app

import android.os.Bundle;

import io.dcloud.WebAppActivity;

public class MainActivity extends WebAppActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
    public boolean isStreamAppMode() {
        return false;
    }

}

注意:

1、务必集成io.dcloud.WebAppActivity这个类

2、必须要有isStreamAppMode方法,如果没有这个方法,会无法正常加载页面

第二部:在AndroidManifest.xml里修改入口Activity

    <activity
            android:name="cn.com.sway.app.MainActivity"
            android:configChanges="orientation|keyboardHidden|keyboard|navigation"
            android:label="@string/app_name"
            android:launchMode="singleTask"
            android:hardwareAccelerated="true"
            android:theme="@style/TranslucentTheme"
            android:screenOrientation="user"
            android:windowSoftInputMode="adjustResize" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

其他:在前端与MainActivity进行交互

前端这么写:

var main = plus.android.runtimeMainActivity();//获取当前的Activity
var res = main.getResData();//直接调用自定义Activity中的getResData方法
console.log(res);

在MainActivity补充getResData方法:

public String getResData(){
    return data;
}

 

使用chrome进行跨域请求调试

赠送不同版本chrome的下载地址:

https://www.chromedownloads.net/chrome64win-stable/

问题背景

在跨平台开发IDE常遇到调试问题,在浏览器进行异步请求时出现如下提示:

Access to XMLHttpRequest at 'https://***********' from origin 'http://www.sway.com.cn' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

这是因为跨域请求导致的,考虑到安全问题,浏览器默认是不允许进行跨域名访问的。

333

有时候我们在web开发时需要进行跨域调试,会出现上图错误提示。

49版本以前的解决方案

使用chrome的用户,可以找到chrome.exe的程序创建一个快捷方式,并在上图标识的位置加入如下参数:

 --args --disable-web-security --user-data-dir

49版本以后的解决方案

 

111

使用chrome的用户,可以找到chrome.exe的程序创建一个快捷方式,并在上图标识的位置加入如下参数:

 --args --disable-web-security --user-data-dir=C:\Users\****\MyChromeDevUserData

注意:****为您的winows账号目录名,另外还需要在该账号目录侠创建MyChromeDevUserData目录以保存相关的chrome信息。

222启动刚刚配置号的快捷方式,出现如上图标示的提示,即可开启跨域模式。

91版本以前的解决方案(未验证)

有的用户还是不能访问,此时在console控制台里会看到一段背景是黄颜色的字

...Specify SameSite=None and Secure if the cookie should be sent in cross-site...'

Chrome中访问地址chrome://flags/ 搜索samesite 将same-site-by-default-cookies,和SameSite by default cookies这两项设置为Disabled后重启浏览器再运行项目即可解决。该设置默认情况下会将未指定SameSite属性的请求看做SameSite=Lax来处理。

91版本-94版本以前的解决方案(未验证)

在chrome的快捷方式后面加上以下运行参数:

--disable-features=SameSiteByDefaultCookies

或者

--flag-switches-begin --disable-features=SameSiteByDefaultCookies,CookiesWithoutSameSiteMustBeSecure --flag-switches-end

94版本以后的解决方案(未验证)

Chromium项目官网提到在94版本通过命令行禁用设置SameSite默认值的方式会被移除,到时方案1和方案2的方式都将无法使用,后续可通过nginx等代理工具或软件将跨域请求转为非跨域请求来解决改问题。以后如果要在开发环境作业, 老老实实上https也许是最简单的一种办法。

使用Impactor进行unc0ver重签时提示line:81错误的解决方法

折腾了好久,在网上找倒以下几种解决办法:

1、使用管理员模式来运行Impactor

2、使用impactor的revoke certificates清除证书后尝试

3、关闭appleid的双重验证

4、使用新的appleid

以上说的,第二种apple已经不允许关闭了,第三种是不现实的,所以我使用第一种和第二种都死活不成功。

原来,使用impactor的revoke certificates清除证书后,需要先重启你的iphone,然后再重签,否则死活不成功。

百度地图开发定位与显示Demo(Android)

百度地图给我们提供了非常丰富的API供我们进行二次开发。百度地图的SDK与定位SDK在今年6月份进行了更新。地图更新为3.0,定位更新为4.2。百度说:这次更新对接口有了较大部分的调整,与之前版本不兼容。本篇博文基于以上最新版本的API提供一个小例子:获取自己当前的经纬度坐标,并且显示在地图上。这里只给出核心代码,其他KEY的引入,地图控件的添加,权限的声明,定位服务的声明可在百度地图API官网(http://developer.baidu.com/map/sdkandev-download.htm)进行查看,稍候会附上完整例子的下载链接。

代码中的注释已经比较详细了,这里就不做说明,参考官网很容易理解。

package org.zsl.android.map;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.mapapi.SDKInitializer;
import com.baidu.mapapi.map.BaiduMap;
import com.baidu.mapapi.map.BitmapDescriptor;
import com.baidu.mapapi.map.MapStatusUpdate;
import com.baidu.mapapi.map.MapStatusUpdateFactory;
import com.baidu.mapapi.map.MapView;
import com.baidu.mapapi.map.MyLocationData;
import com.baidu.mapapi.model.LatLng;


public class MainActivity extends Activity {
	public MapView mapView = null;
	public BaiduMap baiduMap = null;

	// 定位相关声明
	public LocationClient locationClient = null;
	//自定义图标
	BitmapDescriptor mCurrentMarker = null;
	boolean isFirstLoc = true;// 是否首次定位

	public BDLocationListener myListener = new BDLocationListener() {
		@Override
		public void onReceiveLocation(BDLocation location) {
			// map view 销毁后不在处理新接收的位置
			if (location == null || mapView == null)
				return;
			
			MyLocationData locData = new MyLocationData.Builder()
					.accuracy(location.getRadius())
					// 此处设置开发者获取到的方向信息,顺时针0-360
					.direction(100).latitude(location.getLatitude())
					.longitude(location.getLongitude()).build();
			baiduMap.setMyLocationData(locData);	//设置定位数据
			
			
			if (isFirstLoc) {
				isFirstLoc = false;
				
				
				LatLng ll = new LatLng(location.getLatitude(),
						location.getLongitude());
				MapStatusUpdate u = MapStatusUpdateFactory.newLatLngZoom(ll, 16);	//设置地图中心点以及缩放级别
//				MapStatusUpdate u = MapStatusUpdateFactory.newLatLng(ll);
				baiduMap.animateMapStatus(u);
			}
		}
	};

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// 在使用SDK各组件之前初始化context信息,传入ApplicationContext
		// 注意该方法要再setContentView方法之前实现
		SDKInitializer.initialize(getApplicationContext());
		setContentView(R.layout.main_activity);
		
		mapView = (MapView) this.findViewById(R.id.mapView); // 获取地图控件引用
		baiduMap = mapView.getMap();
		//开启定位图层
		baiduMap.setMyLocationEnabled(true);
		
		locationClient = new LocationClient(getApplicationContext()); // 实例化LocationClient类
		locationClient.registerLocationListener(myListener); // 注册监听函数
		this.setLocationOption();	//设置定位参数
		locationClient.start(); // 开始定位
		// baiduMap.setMapType(BaiduMap.MAP_TYPE_NORMAL); // 设置为一般地图

		// baiduMap.setMapType(BaiduMap.MAP_TYPE_SATELLITE); //设置为卫星地图
		// baiduMap.setTrafficEnabled(true); //开启交通图

	}

	// 三个状态实现地图生命周期管理
	@Override
	protected void onDestroy() {
		//退出时销毁定位
		locationClient.stop();
		baiduMap.setMyLocationEnabled(false);
		// TODO Auto-generated method stub
		super.onDestroy();
		mapView.onDestroy();
		mapView = null;
	}

	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		mapView.onResume();
	}

	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		mapView.onPause();
	}

	/**
	 * 设置定位参数
	 */
	private void setLocationOption() {
		LocationClientOption option = new LocationClientOption();
		option.setOpenGps(true); // 打开GPS
		option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);// 设置定位模式
		option.setCoorType("bd09ll"); // 返回的定位结果是百度经纬度,默认值gcj02
		option.setScanSpan(5000); // 设置发起定位请求的间隔时间为5000ms
		option.setIsNeedAddress(true); // 返回的定位结果包含地址信息
		option.setNeedDeviceDirect(true); // 返回的定位结果包含手机机头的方向
		
		locationClient.setLocOption(option);
	}

}

 

针对微信屏蔽淘宝,使用chrome模拟iphone或android在微信中访问网页的测试开发代码

开始–运行中输入以下命令,启动浏览器:

模拟谷歌Android:

chrome.exe –user-agent=”Mozilla/5.0 (Linux; U; Android 2.2; en-us; Nexus One Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1″

模拟谷歌Android在微信中的环境:

chrome.exe –user-agent=”Mozilla/5.0 (Linux; Android 4.4.4; X98 Air 3G(C9J7) Build/KTU84P) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/33.0.0.0 Safari/537.36 MicroMessenger/6.0.0.57_r870003.501 NetType/3gnet”

模拟苹果iPhone:

chrome.exe –user-agent=”Mozilla/5.0 (iPad; U; CPU OS 3_2_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B500 Safari/531.21.10″

模拟苹果iPhone在微信中的环境:

chrome.exe –user-agent=Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11d201 MicroMessenger/5.3″“

这种方法仅供特殊情况下使用,因为重启Chrome将不能恢复正常User-Agent,所以是一次性.

在CentOS下安装crontab服务

执行

crontab -e

提示:-bash: crontab: command not found
于是要安装这个crontab
查了一下资料,才知道它不叫cron,crond,crontab,crontabs,它叫vixie-cron
# yum install -y vixie-cron  执行安装
[root@node16 ~]# crontab -l
no crontab for root
[root@node16 ~]#
[root@node16 ~]# chkconfig –list crontab
在 crontab 服务中读取信息时出错:没有那个文件或目录
[root@node16 ~]# chkconfig –list cron
在 cron 服务中读取信息时出错:没有那个文件或目录
[root@node16 ~]# chkconfig –list crond
crond           0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
[root@node16 ~]# service crond status
crond 已停
[root@node16 ~]# service crond start
启动 crond:                                               [确定]
[root@node16 ~]# service crond status
crond (pid  16932) 正在运行…
[root@node16 ~]#

在root下输入:crontab -l
如果提示:
no crontab for root
就输入crontab -e 会打开一个空白的文件。
直接:wq保存退出
然后一个新的crontab就生成了!

什么人不怕死?那些没有文化、没有知识的人不怕死。

什么人不怕死? 不怕死的人有很多种,在这里我们讨论一种人,就是那些没有文化、没有知识的不怕死的人,他们往往是一个盗抢犯或者是社会上的流氓、小混混等等。

论证:

1、他们没有接受过高等教育,九年的义务教育对他们来说没有价值,再者不好好读书,对他来说知识更加没有任何意义。

2、他们不像那些大学生那样,单单一个大学就要花费父母上十万的金钱,那是他们可能攥个四五年也攥不到的数字,对大学生来说,那是消耗品,是获取知识的必需品;而那些不怕死的人通常会把钱用在吃喝玩乐上,或者是赌博上。

3、他们的家庭往往是耕田之类的农民,对于他们来说,多生一个孩子只是等于多一双筷子,生多少有多少,孩子的抚养成本并不高,因为他们潜意识了没有生命价值这回事。

结论:他们没有意识到生命的可贵,他们不怕死。

总结:他们不怕死,因为他们不知道一个人长大的成本,所以他们也没有意识到他人的生命十分可贵,因此他们往往在犯罪时轻易剥夺了他人的生命,包括盗抢的时候、或者是生气的时候。因此,提高国家的教育水平很重要,文化教育程度提高了,社会上的犯罪一定会有所下降的。

CAS登录成功后,返回信息包含中文时无法正常登录的解决办法.

345

在客户端的web.xml中找到如下代码段并且加入高亮部分代码:

<filter>
	<filter-name>CAS Validation Filter</filter-name>
	<filter-class>
		org.jasig.cas.client.validation.Cas20ProxyReceivingTicketValidationFilter
	</filter-class>
	<init-param>
		<param-name>casServerUrlPrefix</param-name>
		<param-value>http://localhost:8080/txyin/cas</param-value>
	</init-param>
	<init-param>
		<param-name>serverName</param-name>
		<param-value>http://localhost:8080/</param-value>
	</init-param>
	<!-- 防获取参数中文乱码[开始] -->  
	<init-param>  
		<param-name>encoding</param-name>  
		<param-value>UTF-8</param-value>  
	</init-param>
	<!-- 防获取参数中文乱码[结束] -->  
</filter>

 

close