网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > J2EE/J2ME
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.在Video Canvas上绘制图形.
.简单封装MIDP RMS操作.
.利用Jsp+Taglib+JavaBean快速构建.
.ibmwebsphere5.0教材+试题.
.Redhat下安装Tomcat.
.3D编程指南第五部分:使用M3G渲染.
.使用J2MEUnit测试J2ME程序.
.Java中的cookie管理方案(2)-与J2.
.创建简单Eclipse插件实现AxisWeb.
.使用J2ME程序测试MIDlet的生命周.
.一个定制计数器组件的编写.
.菜鸟学jsp(二).
.扫描屏幕和颜色渐变的效果.
.基于Java的Web服务器工作原理(三.
.J2ME结构与相关规范介绍.
.henson.midp.Float浮点类介绍.
.菜鸟学jsp(三).
.轻松维护RDF元数据模型.
.使用EasyMock使单元测试更加容易.
.J2ME游戏开发技巧:用setClip分割.

保护自己的MIDlet程序

发表日期:2007-12-23


大家是如何保护自己的引用程序的呢?
看到一些游戏的保护方式有些是允许运行一次,有的有时间限制。
他们是如何做到的呢?是不是每次都要去写那些千篇一律的代码呢?
我就研究了一个自己的解决方案:Protector。

这些Protector有一个公共的基类:Protector
他是这样的:

package vmLinux.app;

import Javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;

public class Protector implements CommandListener {
    public static final String NameRMS="PROTECTOR";

    MIDlet app_;
    Displayable ui_;
    Command cmdOK_;
   
    public Protector(MIDlet app)
    {
        app_=app;
        cmdOK_=new Command("OK",Command.SCREEN,2);
    }
   
    public boolean check()
    {
        showUI();
        return false;
    }
   
    protected void showUI()
    {
        if(ui_==null)
            ui_=new ProtectorUI();
        ui_.addCommand(cmdOK_);
        ui_.setCommandListener(this);
        Display.getDisplay(app_).setCurrent(ui_);
    }
   
    public void commandAction(Command c, Displayable d) {

        if(c==cmdOK_)
            app_.notifyDestroyed();
    }

}

他的任务就是处理一些公共事务。

接下去就来实现一次性的保护:OnceProtector
如何实现一次性保护呢?如何知道是否已经运行过了呢?
我们需要一个地方存储一些标志已经运行过的标记。
哪里合适呢,RMS/HTTP。通过HTTP连接把信息存到服务器虽然好
但是限制了程序的应用场合,没有开通网络的手机便无法使用。
所以还是用RMS来解决吧。
虽然有些欠缺,比如用户可以通过删除rms记录来重新运行,但这恐怕是唯一的选择。

下面来实现OnceProtector。

package vmlinux.app;

import javax.microedition.midlet.MIDlet;
import javax.microedition.rms.*;

public class OnceProtector extends Protector {


    public OnceProtector(MIDlet app)
    {
        super(app);
    }
   
    public boolean check() {
        boolean r=true;
        try
        {
            RecordStore rs=RecordStore.openRecordStore(NameRMS,true);
            RecordEnumeration e=rs.enumerateRecords(null,null,false);
            if(e.hasNextElement())
            {
                showUI();
                r=false;
            }
            else
            {
                writeTag(rs);
                r=true;
            }
            rs.closeRecordStore();
        }
        catch(Exception ex)
        {
            r=false;
        }
        return r;
    }


}

在程序中加入保护:startApp的第一行加入if(!new OnceProtector().check())return;

动动脑筋再实现TimeProtector,SNProtector

有问题或建议请联系vmlinuxx@gmail.com,共同学习,共同提高:)

(出处:)


上一篇:J2ME中的字符串管理和多语言支持 人气:594
下一篇:封装MathFP和FloatBox 人气:590
浏览全部J2EE/J2ME的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐