精华内容
下载资源
问答
  • 一、反编资源文件 ... 1 下载附件apktool.rar,解压至任意目录。  2 打开命令窗口运行cmd。进入到apktool的解压目录中  输入:apktool d F:12apk(命令行:apktool d要反编译的文件)  3 打开f

     一、反编资源文件

         1 下载附件apktool.rar,解压至任意目录。

         2 打开命令窗口运行cmd。进入到apktool的解压目录中

           输入:apktool d F:12apk(命令行:apktool d要反编译的文件)

        3 打开f:12apk文件夹这时得到我们想要的各种资源

     

       虽然我们获得了这些资源,但是apk中的Androidmanifest是经过压缩的,所以需要下载AXMLPrinter2工具进行解开

    执行命令为:  java -jar AXMLPrinter2.jar AndroidManifest.xml >Androidmanifest.txt

    这样就要以得到一个androidmanifest.txt文件,你可以在这里面进行修改

     

       apktool工具下载到后解压,会得到apktool.exe,打开选择apk文件,再选择目录,点击反编译apk,即可!

     

     

     

    展开全文
  • 附件下载的做法是服务端的web页面提供a标签,将要下载附件的ftp地址给href,当在android访问这个页面,点击标题对应的链接时,android端会触发webview的DownloadListener事件,去ftp下载附件...

    接上篇Android-WebView集成iScroll4之input框无法获取焦点,发现开始点击列表的标题,下载附件特别好使,直接可以调本地的工具打开附件。

     

    附件下载的做法是服务端的web页面提供a标签,将要下载附件的ftp地址给href,当在android访问这个页面,点击标题对应的链接时,android端会触发webview的DownloadListener事件,去ftp下载附件,并调用本机的软件将其打开。

    //设置WebView的DownloadListener: 
    webView.setDownloadListener(new MyWebViewDownLoadListener()); 

    那问题就是web页面的a标签集成iScroll4时无法响应WebView的DownloadListener事件。

    上网搜了很多,都没有这方面的问题,奇怪webview做下载没有与iScroll集成的吗?没办法,只能自己一个一个尝试解决了:

     

    1.加a标签过滤不好使 

    在加入iScroll之前, 这个下载功能很好使,只要一点击a标签,android就能捕获这个事件,但加了iScroll

    后这个下载就不好使了,经过与android开发连调打断点,发现根本就不进setDownloadListener这个方法,说明跟input框标签一样被过滤掉了,于是乎在过滤条件里加上a标签:

    onBeforeScrollStart: function (e) {
    				var target = e.target;
    				while (target.nodeType != 1) {
    				target = target.parentNode;
    				}
    				if (target.tagName != 'A' && target.tagName != 'INPUT') {
    				e.preventDefault();
    				}
    			},

     这会记得了,清电脑缓存,清手机缓存,发现电脑端不像以前一样,点击a链接就可直接下载,它会跳转到一个新的页面做url重定向,地址栏就是要下载的ftp的路径,但它不会自动下载,我在地址栏一回车,它就开始下载了。手机上测试的效果是直接跳转到一个空白页面,根本不能下载。

     

    分析还是这个a链接被iScroll给禁用了,但是它又能跳转,只是不是android能理解,能捕获的跳转,并不是我要的效果,至于为什么会这样,我也没有找到原因。

     

    加了a标签过滤不好使,又加了好几种包含a标签的什么table,tr,td等,经过测试都不好使,这回连电脑端不好使,说明不是这个原因。

     

    2.采用Iframe分离不好使

    然后想怎样让android能够继续捕获这个事件,iScroll和我的数据不是在一整个页面吗,那我就将下载的a链接放到一个Iframe中,每次下拉刷新,上拉加载分页我就加载一个Iframe,按照这个思路小试了一把发现可行,立马就能下载,android断点也进了,事件也响应,但是这个页面太复杂,web页面用的是jsp,有查询,html5的样式,还有一堆的java代码,想要实现iScroll刷新时加载Iframe,并动态改变Iframe中元素的内容,但样式,iScroll刷新的效果都不好,不能适得其反啊,最后又放弃了Iframe的做法,一时也想不出什么好办法,于是就放了几天去搞别的东西了。

     

    3.a链接换成span搞定

    到周末一大早出去玩了一天,晚上回来,打开电脑,连上手机测了两把,还是不行,再想想,有什么元素能替换a标签的吗,并且能够让android响应DownloadListener事件,脑子里立马想到了span,但心里还是没底,a标签都不行,span能行?换完后,加上onclick事件,再一测,电脑端立马好了,直接可以下载,不用跳页面,拿手机一测,也好了,不相信,把数据,缓存清了,再测,ok了。再拿别的手机测,都ok,我靠,太神奇了,就是将标签换成span,也不用加过滤就好了。

    <%-- <a href="<%=row.getHtmlurl() %>" style="color: #0257b0"> --%>
    				<span οnclick="download('<%=row.getHtmlurl() %>')" style="color: #0257b0">
    					<table>
    						<tr>
    							<td style="word-wrap: break-word; word-break: break-all;"><%=row.getTitle() %></td>
    						</tr>
    					</table>
    				</span>
    				<%-- </a> --%>
    
    <script type="text/javascript">
    
    	function download(url){
    		window.location.href = url;
    	}
    </script>

    我猜除了span,应该还有别的标签也支持android响应webview的DownloadListener事件,这应该是iScroll故意设计的,只是禁用那些具有动态交互的标签如a,input,select等。

     

    至此WebView集成iScroll4碰到的两个问题,都解决了,唉,不容易呀!

    展开全文
  • android salite3 使用实例

    2011-07-19 14:53:54
    实例在附件。请下载。   ...   我们大家都知道Android平台提供给我们一个数据库辅助类来创建或...构造器中,调用Context中的方法创建并打开一个指定名称的数据库对象。继承和扩展SQLiteOpenHelper类主要做的工作...

    实例在附件。请下载。

     

    声明 本文转自:http://blog.knowsky.com/247725.htm

     

    我们大家都知道Android平台提供给我们一个数据库辅助类来创建或打开数据库,这个辅助类继承自SQLiteOpenHelper类,在该类的 构造器中,调用Context中的方法创建并打开一个指定名称的数据库对象。继承和扩展SQLiteOpenHelper类主要做的工作就是重写以下两个 方法。

    onCreate(SQLiteDatabase db) : 当数据库被首次创建时执行该方法,一般将创建表等初始化操作在该方法中执行。

    onUpgrade(SQLiteDatabse dv, int oldVersion,int new Version):当打开数据库时传入的版本号与当前的版本号不同时会调用该方法。

    除了上述两个必须要实现的方法外,还可以选择性地实现onOpen 方法,该方法会在每次打开数据库时被调用。

    SQLiteOpenHelper 类的基本用法是:当需要创建或打开一个数据库并获得数据库对象时,首先根据指定的文件名创建一个辅助对象,然后调用该对象的 getWritableDatabase 或 getReadableDatabase方法 获得SQLiteDatabase 对象。

    调用getReadableDatabase 方法返回的并不总是只读数据库对象,一般来说该方法和getWriteableDatabase 方法的返回情况相同,只有在数据库仅开放只读权限或磁盘已满时才会返回一个只读的数据库对象。

    下面通过一个简单的小例子说明SQLiteOpenDatabase的用法,其中包括创建数据库、插入数据、更新 、查询等等,我们将查询后获取到的数据显示到TextView上,看一下运行后的效果。

    android SQLiteOpenHelper使用示例 - 战狼 - 战狼

    MySQLiteHelper
    Java代码
    package xiaohang.zhimeng;

    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.database.sqlite.SQLiteDatabase.CursorFactory;

    public class MySQLiteHelper extends SQLiteOpenHelper{
    //调用父类构造器
    public MySQLiteHelper(Context context, String name, CursorFactory factory,
    int version) {
    super(context, name, factory, version);
    }

    /**
    * 当数据库首次创建时执行该方法,一般将创建表等初始化操作放在该方法中执行.
    * 重写onCreate方法,调用execSQL方法创建表
    * */
    @Override
    public void onCreate(SQLiteDatabase db) {
    db.execSQL("create table if not exists hero_info("
    + "id integer primary key,"
    + "name varchar,"
    + "level integer)");

    }

    //当打开数据库时传入的版本号与当前的版本号不同时会调用该方法
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }

    }

    package xiaohang.zhimeng;

    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    import android.database.sqlite.SQLiteDatabase.CursorFactory;

    public class MySQLiteHelper extends SQLiteOpenHelper{
    //调用父类构造器
    public MySQLiteHelper(Context context, String name, CursorFactory factory,
    int version) {
    super(context, name, factory, version);
    }

    /**
    * 当数据库首次创建时执行该方法,一般将创建表等初始化操作放在该方法中执行.
    * 重写onCreate方法,调用execSQL方法创建表
    * */
    @Override
    public void onCreate(SQLiteDatabase db) {
    db.execSQL("create table if not exists hero_info("
    + "id integer primary key,"
    + "name varchar,"
    + "level integer)");

    }

    //当打开数据库时传入的版本号与当前的版本号不同时会调用该方法
    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    }

    }


    Activity01
    Java代码
    package xiaohang.zhimeng;

    import android.app.Activity;
    import android.content.ContentValues;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    import android.graphics.Color;
    import android.os.Bundle;
    import android.widget.TextView;

    public class Activity01 extends Activity {
    MySQLiteHelper myHelper;
    TextView tv;

    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    tv = (TextView)findViewById(R.id.tv);
    //创建MySQLiteOpenHelper辅助类对象
    myHelper = new MySQLiteHelper(this, "my.db", null, 1);
    //向数据库中插入和更新数据
    insertAndUpdateData(myHelper);
    //查询数据
    String result = queryData(myHelper);
    tv.setTextColor(Color.RED);
    tv.setTextSize(20.0f);
    tv.setText("名字\t等级\n"+result);

    }

    //向数据库中插入和更新数据
    public void insertAndUpdateData(MySQLiteHelper myHelper){
    //获取数据库对象
    SQLiteDatabase db = myHelper.getWritableDatabase();
    //使用execSQL方法向表中插入数据
    db.execSQL("insert into hero_info(name,level) values('bb',0)");
    //使用insert方法向表中插入数据
    ContentValues values = new ContentValues();
    values.put("name", "xh");
    values.put("level", 5);
    //调用方法插入数据
    db.insert("hero_info", "id", values);
    //使用update方法更新表中的数据
    //清空ContentValues对象
    values.clear();
    values.put("name", "xh");
    values.put("level", 10);
    //更新xh的level 为10
    db.update("hero_info", values, "level = 5", null);
    //关闭SQLiteDatabase对象
    db.close();
    }

    //从数据库中查询数据
    public String queryData(MySQLiteHelper myHelper){
    String result = "";
    //获得数据库对象
    SQLiteDatabase db = myHelper.getReadableDatabase();
    //查询表中的数据
    Cursor cursor = db.query("hero_info", null, null, null, null, null, "id asc");
    //获取name列的索引
    int nameIndex = cursor.getColumnIndex("name");
    //获取level列的索引
    int levelIndex = cursor.getColumnIndex("level");
    for (cursor.moveToFirst();!(cursor.isAfterLast());cursor.moveToNext()) {
    result = result + cursor.getString(nameIndex)+ "\t\t";
    result = result + cursor.getInt(levelIndex)+"\n";
    }
    cursor.close();//关闭结果集
    db.close();//关闭数据库对象
    return result;
    }

    @Override
    protected void onDestroy() {
    SQLiteDatabase db = myHelper.getWritableDatabase();//获取数据库对象
    //删除hero_info表中所有的数据 传入1 表示删除所有行------>点击back按钮
    db.delete("hero_info", "1", null);
    super.onDestroy();
    }
    }

    展开全文
  • 如何确认x5内核是否成功加载如果x5内核下载失败,如何处理如何处理多次打开附件出现等待并且等待很久的情况提供一些自己解决问题的方案给大家参考如何确认x5内核是否成功加载我们在初始化的过程中,会有两个参数需要...

    首先列一下,我在使用TBS浏览器中有遇到的问题。

    如何确认x5内核是否成功加载

    如果x5内核下载失败,如何处理

    如何处理多次打开附件出现等待并且等待很久的情况

    提供一些自己解决问题的方案给大家参考

    如何确认x5内核是否成功加载

    我们在初始化的过程中,会有两个参数需要我们传入

    1、 上下文

    2、 回调方法

    确认x5内核是否成功加载的方法就在我们的回调方法中实现

    //搜集本地tbs内核信息并上报服务器,服务器返回结果决定使用哪个内核。

    QbSdk.PreInitCallback cb = new QbSdk.PreInitCallback() {

    @Override

    public void onViewInitFinished(boolean arg0) {

    // TODO Auto-generated method stub

    //x5內核初始化完成的回调,为true表示x5内核加载成功,否则表示x5内核加载失败,会自动切换到系统内核。

    Log.d("X5", " onViewInitFinished is " + arg0);

    }

    @Override

    public void onCoreInitFinished() {

    Log.d("X5", " onCoreInitFinished @@@@@@@@@@" );

    // TODO Auto-generated method stub

    }

    };

    //x5内核初始化接口

    QbSdk.initX5Environment(getApplicationContext(), cb);

    如果我们的x5内核集成成功,会调用回调方法里面我们添加的日志信息,

    如果没有调用,则表示我们的x5内核是集成失败的。

    如果x5内核下载失败,如何处理

    如果我们通过日志信息,发现我们的回调方法没有被调用。那么,我们肯定是要重新下载的。

    // 监听内核的下载

    QbSdk.setTbsListener(new TbsListener() {

    @Override

    public void onDownloadFinish(int i) {

    //tbs 内核下载完成回调

    Log.d("X5", " 内核下载完成" );

    }

    @Override

    public void onInstallFinish(int i) {

    //内核安装完成回调,

    Log.d("X5", " 内核安装完成" );

    }

    @Override

    public void onDownloadProgress(int i) {

    //下载进度监听 百分比 : i%

    Log.d("X5", " 内核下载进度:" + i );

    }

    });

    //判断是否要自行下载内核

    boolean needDownload = TbsDownloader.needDownload(this, TbsDownloader.DOWNLOAD_OVERSEA_TBS);

    Log.d("X5",needDownload + "");

    // 根据实际的网络情况下,选择是否下载或是其他操作

    // 例如: 只有在wifi状态下,自动下载,否则弹框提示

    if (needDownload){

    // 启动下载

    TbsDownloader.startDownload(this);

    }

    如何处理多次打开附件出现等待并且等待很久的情况

    可能是情况是,在第一次打开附件的时候,没有关闭,导致第二次打开,第一次的资源没有被释放,出现了一直等待的情况。

    解决的办法就是在我们使用x5内核的Activity中关闭我们的附件查看器。

    import com.tencent.smtt.sdk.TbsReaderView;

    private TbsReaderView mTbsReaderView;

    @Override

    protected void onDestroy() {

    super.onDestroy();

    if (mSuperFileView != null){

    // Log.d("=== ", "onDestroy: 页面关闭销毁资源");

    mSuperFileView.onStopDisplay();

    }

    }

    以上是我个人在项目中遇到的问题,以及解决的方案。

    欢迎各位朋友,讨论、指正~

    展开全文
  • Intellij IDEA和AS同根同源,二者汉化相同此汉化基于AndroidStudio V2.2Beta最新V2.2稳定版本 使用前请下载并安装 AndroidStudio v2.2最新版附件下载:链接:http://pan.baidu.com/s/1gfmG2TP英文语言包为安装目录下的...
  • 254、修复最新版 QQ 无法下载附件的问题 253、更新 SandHook 版本 252、修复 9.0 以上安装未签名Apk问题 251、修复 10.0 的定位问题 2020年 1月16号 至 2020年 3月6号 商业版代码更新内容 250、调整 lib 重定向逻辑...
  • 一、打开手机版云便签敬业签登录账号,找到一条添加有声音、图片或者附件文件的便签内容,点击进行内容详情页面,找到图片、录音或者附件文件下载保存到本地; 二、在手机桌面或者本地文件夹中找到“文件管理”...
  • android Google地图不能定位问题解决

    热门讨论 2012-03-03 15:11:06
    附件下载并解压到X:\adb,因为前期如果您刷机,肯定在您的某块盘上有adb这个文件夹,没有?~~~呃,在别人的教程里下载adb吧,您是怎么root安装RE的?好吧,您赢了,我已经把adb这个4个文件一并放在包里了。 检查...
  • 所需工具及步骤,工具下载附件apktool: 1.将APK放置到APKTool目录下,改名为123.apk; 2.打开APKTool,选择1进行反编译操作完成后会生成一个apk文件夹; 3.使用后可成功查看xml文件、及图片,但java代码的...
  • [移动办公]修复了了文档附件无法打开的问题 [移动办公]修复了IOS通讯录搜索框按钮看不到的问题 [移动办公]修复了android sdk环境升级,developtools、Android support等官方库升级的问题 [移动办公]修复了Android...
  • 下载说明:由于可执行文件比较大,如有需要请到网盘下载(下面都给出了网盘地址)。 网店地址:https://shop244026315.taobao.com/ 联系方式:QQ:517216493 微信:feiyangqingyun QQ好友满了推荐加微信 视频相关...
  • iScreenLocker 是 Android 上处理系统通知的新途径,可以让您在锁屏时看到简洁、美观的新通知,能直接打开它。如果您想看口袋里的手机有什么新通知,只需从口袋中取出,便会简洁明了地自动显示最新通知。 *软件...
  • 小弟最近做一个预览上传下载附件的功能用到了老马的TBS然后在8.0的手机上大部分的 文件都可以打开预览也能上传成功,但是在7.0和9.0的华为手机上面就提示文件无法预览请到 其它应用打开。我打来的是doc文件。目前...
  • 新增iPhone和Android手机客户端下载地址可通过扫描二维码实现下载(更加方便的实现下载到手机了) 新增后台可设置附件类型 修复网站安全问题(感谢 秒杀@360 、 合肥滨湖虎子@360 的反馈) 修复发布某些字符的...
  • 新增iPhone和Android手机客户端下载地址可通过扫描二维码实现下载(更加方便的实现下载到手机了) 新增后台可设置附件类型 修复网站安全问题(感谢 秒杀@360 、 合肥滨湖虎子@360 的反馈) 修复发布某些字符的...
  • 此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
    此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这...
  • java开源包1

    千次下载 热门讨论 2013-06-28 09:14:34
    它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。...
  • java开源包12

    热门讨论 2013-06-28 10:14:45
    它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。...
  • Java资源包01

    2016-08-31 09:16:25
    它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。...
  • java开源包101

    2016-07-13 10:11:08
    它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。...
  • java开源包11

    热门讨论 2013-06-28 10:10:38
    它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。...
  • java开源包6

    热门讨论 2013-06-28 09:48:32
    它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。...
  • java开源包10

    热门讨论 2013-06-28 10:06:40
    它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。...
  • java开源包8

    热门讨论 2013-06-28 09:55:26
    它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。...
  • java开源包9

    热门讨论 2013-06-28 09:58:55
    它在搜索的同时可以下载遇到的链接所指向的所有的或预定义的范围的内容。 WebSocket协议的Java实现 WebSocket4J WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。...

空空如也

空空如也

1 2
收藏数 31
精华内容 12
关键字:

android下载附件并打开