Android模拟器浏览器访问Internet及本地web

 更新时间:2016年9月20日 19:57  点击:1710
有时我们需要在Android模拟器上的Browser访问Internet,或者访问本地的web应用,那么我们应该如何配置实现这个功能呢?

本文我们讲的是在Windows环境下,配置好Adroid环境变量后(如将d:android-sdk-windows-1.0_r1 ools加入系统变量PATH),在命令行窗口输入:

emulator

启动Android 模拟器后, 输入:

adb shell

进入adb shell模式:

将网络连接代理设置写入配置数据库,假如你的上网代理IP是10.193.xx.xx:
sqlite3 /data/data/com.android.providers.settings/databases/settings.db "INSERT INTO system VALUES(99,http_proxy,10.193.xx.xx:1080)"
查询一下是否成功更改了系统设置:

sqlite3 /data/data/com.android.providers.settings/databases/settings.db "SELECT * FROM system"
 

结果中应有:99|http_proxy|10.193.xx.xx:1080

重启模拟器,应该可以使用Browser上Internet了.

删除刚刚写入的配置信息方法:
sqlite3 /data/data/com.android.providers.settings/databases/settings.db "DELETE FROM system WHERE _id=99"


Android模拟器访问本地Web应用

一个早上就是想让android的模拟器可以访问到web的应用程序,但是一直是不可以,弄的不知所措。

开控制面板--选择程序和功能--点击左边的开启或关闭windows功能--然后选则CGI,等等...试了很久还是不可以。

后来在上面查的时候看到的是有一段资料的介绍:

如何在Android模拟器上访问本地的Web应用? 例如,在你的开发机器上启动一个Tomcat服务,接着打开电脑上的浏览器,默认情况下输入http://localhost:8080/就能够访问到Tomcat的主页面;那么,如果我们想在Android模拟器上来访问,可以吗?答案是肯定的,但是访问的URL会有所变化,这又是为什么呢?请继续往下看。

在一般的Java Web程序开发中,我们通常使用localhost或者127.0.0.1来访问本机的Web服务,但是如果我们在Android模拟器中也采用同样的地址来访问,Android模拟器将无法正常访问到我们的服务,这是为什么呢?我们可以这样来理解:Android的底层是Linux kernel,包括Android本身就是一个操作系统,因此,这时我们在模拟器的浏览器中输入的localhost或127.0.0.1所代表的是Android模拟器(Android虚拟机),而不是你的电脑,明白了吗?这就是为什么你在模拟器中使用localhost时会报“Web page not available”的原因。

那到底要如何才能访问到本地电脑上的Web应用呢?在Android中,将我们本地电脑的地址映射为10.0.2.2,因此,只需要将原先的localhost或者127.0.0.1换成10.0.2.2,就可以在模拟器上访问本地计算机上的Web资源了。

那下面我们就启动电脑上的Tomcat,然后运行Android模拟器,打开模拟器上的浏览器,然后访问:http://10.0.2.2:8888 是不是已经看到那只可爱的Tomcat猫了呢?访问截图如下图所示。(说明:在我的电脑上,Tomcat服务使用的端口是8888,默认情况是8080)

图:


试用了,很受用。O(∩_∩)O~呵呵

如果我们的项目需要做来电及短信的功能,那么我们就得在Android模拟器开发这些功能,本来就来告诉我们如何在Android模拟器上模拟来电及来短信的功能。

在Android模拟器上模拟来电


项目需求要做一个控制来电显示的Android 应用,那么我们就需要在Emulator上模拟来电效果了,下面来看看如何实现Android模拟器上模拟来电

方法如下:
1.单个电话
打开命令行cmd,输入telnet 回车.
然后输入 o localhost 5554 回车,连到Emulator上.
输入gsm call 123456 上面显示OK
这时再去看模拟器,上面就有来电了.
其他:
挂断电话:gsm cancel <模拟打进的电话号码>
设置其他模式:gsm voice unregistered为网络无法联通,denied为紧急呼叫模式

help gsm
allows you to change GSM-related settings, or to make a new inbound phone call

available sub-commands:
   gsm list             list current phone calls
   gsm call             create inbound phone call
   gsm busy             close waiting outbound call as busy
   gsm hold             change the state of an oubtound call to 'held'
   gsm accept           change the state of an outbound call to 'active'
   gsm cancel           disconnect an inbound or outbound phone call
   gsm data             modify data connection state
   gsm voice            modify voice connection state
   gsm status           display GSM status
2. 多个模拟器模拟播打电话
启动多个模拟器,在模拟器A中播模拟器B的端口号码,即可。
3.发送短信
sms send <模拟发送短信的电话号码> <短信内容>
例如:sms send 1234567 Hello
 
 
 
Vista 系统中使用 Telnet服务 器问题
 
【问】 Vista下 输入telnet,提示没有找到该文件,如何找回telnet呢。

【答】 很多在Vista下没有找到telnet程序,如在“开始”的“运行”或“搜索”框中输入telnet,提示没有找到该文件,其实Vista默认是不安装的,由于是针对服务器设置的,在Windows Server 2008中是默认安装的。

解决的方法也很简单,直接安装Vista的系统组件中安装即可,操作步骤,“我的电脑”->“控制面板”->“程序和功能”中,在左边的树图中可以看到“打开或关闭 Windows 功能”,在打开的新对话框“Windows 功能”中可以看到 “telnet服务器”和“telnet客户端”,我们选中这两项,telnet就恢复了,如果仅用于连接远程服务器,我们只需安装“telnet客户端”即可。



Android调试时模拟接收短信与来电

Android模拟器模拟接收短信和来电的方法

关于发送短信和拨打电话,在android里面都很简单,一两句代码就可以搞定。

接收短信和来电有两种方法:

1:用android模拟器自带的Emulator Control(什么?不知道这个在哪里-_-!eclipse左下角有一个+号,选择other,找到打开android目录即可看到。或者在上面的搜索框内输入em.....)


Android调试时模拟接收短信与来电

看到了么?输入incoming number,选择voice就是模拟来电;选择SMS就是模拟发送短信。

其实android模拟器还有一个自己的sim卡号码:15555218135。

在手机中可以找到:

Settings——About phone——Status——Phone number

设置——关于手机——状态——手机号码

2:利用命令行

在cmd下面,可以向模拟器发送一些指令,告诉模拟器我是来电话啦还是来短信了。

打开cmd,输入:telnet localhost 5554

注:vista系统默认没有打开telnet,需要我们手动打开。

5554是模拟器的端口号,大家在模拟器的title上面同样可以看到。

然后输入:gsm call 15555218135

看看模拟器,是不是有一个15555218135的来电?


Android调试时模拟接收短信与来电

再输入:sms send ,如:sms send 15555218135 hello

模拟器是不是有一个发送过来的短信的提示?


Android调试时模拟接收短信与来电

这样我们就可以在模拟器中调试我们处理来电和接收短信的程序了。


Android调试时模拟接收短信与来电


本文章来为各位介绍Android fragment使用方法与注意事项,希望此例子能够帮助到各位朋友,有需要了解的朋友可进来看看。
1、使用支持库

 

如果您的应用需要运行在3.0及以上的版本,可以忽略这部分内容。

 

如果您的应用使用在3.0以下、1.6及以上的版本,需要使用支持库来构建。

 

使用支持库的步骤:

 



  1. 使用SDK下的SDK Manager工具下载Android Support Package


     2. 在您的Android工程的顶级目录下创建一个libs目录

    3. 找到您的SDK下的/extras/android/support/v4/android-support-v4.jar,并且拷贝到您的项目的libs下,选中这个jar包 → 右键 → Build Path → Add to Build Path

    4.在您的项目的Manifest.xml文件的<manifest>标签下添加:

    <uses-sdkandroid:minSdkVersion="4"

      android:targetSdkVersion="8"/>

      其中targetSdkVersion是您的软件最小支持的版本

    5.如果您的项目支持3.0以下的版本,请导入如下的包:android.support.v4.*;

    在使用Fragment的Activity请继承FragmentActivity而不是Activity。如果您的系统是3.0或以上版本,同样需要导入类似的包,但是可以使用普通的Activity。 

      

    2、创建一个Fragment

    Fragment支持在不同的Activity中使用并且可以处理自己的输入事件以及生命周期方法等。可以看做是一个子Activity。

    创建一个Fragment

    创建一个Fragment和创建一个Activity很类似,继承Fragment类,重写生命周期方法,主要的不同之处就是需要重写一个onCreateView()方法来返回这个Fragment的布局。例子:

     


      

    Fragment的生命周期方法依赖于Activity的生命周期,例如一个Activity的onPause()的生命周期方法被调用的时候这个Activity中的所有的Fragment的onPause()方法也将被调用。

     

    更多的内容请参照类Fragment。

    使用XML添加FragmentActivity

    尽管Fragment可以被多个Activity重用,但是您也必须把Fragment关联到一个FragmentActivity上。可以使用XML布局文件的方式来实现这种关联。

    说明:上面的所说的FragmentActivity适用在API在3.0以下的版本,3.0及以上的版本可以使用普通的Activity。

    例子:


      

    上面使用fragment标签,android:name=””指定一个添加到xml中的Fragment。对于创建不同的屏幕尺寸布局的更多信息,请阅读支持不同的屏幕尺寸。

     


     

      

    当您添加一个片段一个活动布局定义的布局XML文件中的片段,你不能删除在运行时的片段。如果您打算在用户交互和交换片段,你必须添加的活性片段的活动时第一次启动。

     

    3、构建一个灵活的UI

     

    FragmentManager提供了对Activity运行时的Fragment的添加、删除、替换的操作。

     

    在Activity运行期间你可以添加Fragment而不是在XML布局文件中进行定义。如果你打算在Activity中改变Fragment的生命过程。

     

    如果要执行添加、删除、修改的操作,你必须通过FragmentManager的对象获得一个FragmentTransaction对象,通过它的API来执行这些操作。

     

    添加一个Fragment到一个Activity,必须把这个Fragment添加到一个容器视图中。例子:


     

    在Activity中你可以通过getFragmentManager()来获得Fragment对象,然后通过FragmentManager对象的beginFragmentTransaction()方法来获得FragmentTransaction对象。通过它的add()方法来添加一个Fragment到当前的Activity中。

    一个FragmentTransaction对象可以执行多个增删修的方法,如果你想把这些修改提交到Activity上,必须在最后调用一下这个对象的commit()方法。例子:


     


      

    由于不是定义在XML布局中的,所有可以转型删除和修改的操作。

    如果替换或者删除一个Fragment然后让用户可以导航到上一个Fragment,你必须在调用commit()方法之前调用addToBackStack()方法添加到回退栈。如果你把这个Fragment添加到了回退栈,在提交之后这个Fragment是会被Stop而不是Destroyed。如果用户导航到这个Fragment,这个Fragment会被Restart而不是重新创建。如果你没有把它添加到回退栈,则在删除或者替换的时候它将被Destroyed。例子:


      

    4、与其他Fragment的交互

    两个单独的Fragment之间是不应该进行通信的。应该使用他们所存在的Activity作为沟通的纽带。

    为了实现两个Fragment的交互,您可以在Fragment中定义一个接口,然后再这个接口中定义一个方法,在Fragment的onAttach()方法中调用这个接口中的方法。然后让Activity实现这个方法来完成Activity和Fragment之间的通信。例子:

    定义接口并调用方法:

     


      

    实现接口,在这个方法中可以进行与其他Fragment的数据的交互:


      

    可以通过FragmentManager的findFragmentById()来查找一个Fragment。


     

     

    fragment使用注意

  2. 在讲这之前呢,需要讲一下,fragment布局的原理,fragment 布局叫做层布局,是一层覆盖一层的。当一个布局里面需要多个fragment 布局嵌套的时候。就会遇到这种难过情况,你会发现两个fragment 的内容重叠到一块了。如果页面里面有按纽的话,你会发现点的第一个页面的按钮。但是第二个页面里的按钮点击事件也被触发了。

  3. 这是昨天遇到的情况,下面就讲一下解决办发,首先你要找到你的fragment 的布局文件。

  4. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
               android:layout_width="match_parent"
               android:layout_height="match_parent"
               android:background="@color/white"
               android:clickable="true"
               android:orientation="vertical" >
     
         <RelativeLayout
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:layout_marginTop="20dp" >
     
           <ImageView
              android:id="@+id/iv_center_head"
              android:layout_width="50dp"
              android:layout_height="50dp"
              android:layout_marginLeft="10dp"
              android:background="@drawable/ic_launcher" />
     
           <TextView
              android:id="@+id/tv_center_shop_name"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:layout_marginTop="9dp"
              android:layout_toRightOf="@+id/iv_center_head"
              android:text="asd"
               android:textSize="14sp" />
        </RelativeLayout>
    </LinearLayout>

  5. 这是一个布局文件,准确的说是fragment 布局文件,需要注意的是:


  6. android:background="@color/white"
    android:clickable="true"

  7. 这两句代码就表示,为fragment 设置背景,以防两个fragment 布局文件重叠,内容错乱出现。 第二行代码则防止  点击穿透的。还有最后不推荐使用多个fragment 重复使用。

很多同学可能需要同时开发ios和Android应用,本文我们提供在mac系统下安装配置Android开发环境图文步骤,如果你的开发机器是mac,本文值得参考。

Java JDK下载

Java JDK(Java SE Development Kit)官方下载 http://www.oracle.com/technetwork/cn/java/javase/downloads/index.html

按照平台下载安装

Mac获得Java的安装位置

$ echo $(/usr/libexec/java_home) #输出当前JDK路径

安装的JDK8: /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk

Mac自带的JDK6: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk

Android SDK下载

官方地方被墙,不解释,翻墙吧。

Android SDK官方下载 https://developer.android.com/sdk/index.html

无法翻墙的请使用国内资源进行下载 Android Dev Tools

下载完, 自行解压 下载好的Android SDK,打开Eclipse —> Preferences对话框,找到Android那一项,单击Browse,选取SDK目录即可。

Eclipse安装

下载对应平台, 然后安装就可以了, 没有什么好说的

ADT安装

ADT(Android Developer Tools)

打开Eclipse,在菜单中选择Help中的 Install New Software , 在右上方选择Add

Name编辑为 ADT

Location编辑为 https://dl-ssl.google.com/android/eclipse/ ( 你懂的要翻 )


ADT

选择 Developer Tools , 点击 next 执行下载

安装平台工具

安装好重启后, 在 Window 中 Android SDK Manager 中下载 Tools 和 Extras 以及其他API


API

虚拟机设置

在Window中打开 Android Virtual Device Manager , Create添加一个Android虚拟机, 用于开发的Android程序做测试.


虚拟机

创建Android工程

重启Eclipse程序后, File->New->Other->Android Application Project. 设置项目名等条目, 创建成功


创建


设置

安装成功

FAQ

AppCompat v7 r21 returning error in values.xml?

搭建过程中会出现各种各样的问题, 遇到问题时, 大家最好把出错原因放到Google中搜索, 最后总能解决的, 实在解决不了, 可以找了安卓开发者帮你看看, 最后祝大家都能成功配置安卓开发环境.


另一篇来自百度经验的,也值得参考

在mac上搭建Android开发环境

首先我们需要知道开发安卓的环境由以下几个组件组成:Java虚拟机JDK、Eclipse、Eclipse插件ADT(Android Developer Tool)和Android开发包SDK。下面就和大家一起学习如何来快速的,适合新手的搭建方式吧!

方法/步骤

因为系统自带jdk,所以就不用在下载了。可以在终端输入java -version查看其结果。


在mac上搭建Android开发环境

然后去android的官方网站下载ADT工具

http://developer.android.com/sdk/index.html

可能之前很多人的教程中都说需要SDK+Eclipse,还有Eclipse插件

但是现在官方把他们全部整合在一起了。

官方的原话“With a single download, the ADT Bundle includes everything you need to begin developing apps”

仅仅下载这个ADT(安卓开发工具包)就包含了你开发所需要的所有东西!

实际就是官方为了方便大家开发,给我们进行了打包吧。


在mac上搭建Android开发环境

解压下载完的ADT包,里面有两个文件夹,一个eclipse一个SDK


在mac上搭建Android开发环境

继续跟着官方文档走,建议将其解压在家目录下的Development目录下,我没有Development目录,但是作为一个菜鸟,我还是决定完全照着官方的意思走,所以我新建了一个Development,然后把刚刚自动解压的eclipse和sdk都移了进来(如何操作?我是使用的终端 mkdir Development 然后mv进来的)


在mac上搭建Android开发环境

进入到eclipse目录,然后启动它!激动人心的时刻!


在mac上搭建Android开发环境


在mac上搭建Android开发环境

现在似乎一起都准备就绪了,可以创建自己的第一个app了!


在mac上搭建Android开发环境


下面我们一起来看一篇关于 安卓开发之Intent传递Object与List的例子,希望这个例子能够为各位同学带来帮助。

 

Intent 不仅可以传单个的值,也可以传对象与数据集合。 传递List<String> 数据集合。

ArrayList<String> info = new ArrayList<String>();
     info.add(name);
     info.add(website);
     info.add(weibo);
Intent intent = new Intent(MainActivity.this, ResultActivity.class);
    intent.putStringArrayListExtra("infoList", info);
    startActivity(intent);

接收String 的方法。

ArrayList<String> infoList = new ArrayList<String>();
infoList = getIntent().getStringArrayListExtra("infoList");

传递Object,此Obiect对象需要实现Serializable接口,用Serializable方式传递Object的语法:bundle.putSerializable(key,object);用Serializable方式接收Object的语法:object=(Object) getIntent().getSerializableExtra(key);实现Serializable接口就是把对象序列化,然后再传输,和Java的常用编程没什么明显区别,而且Object不需要明显改变,推荐用这种方式。

下面是Object对象:

public class SerInfo implements Serializable {
 
   private String name;
   private String website;
   private String weibo;
    ............
}

get,set方法自己创建,用Serializable 传递Object:

SerInfo serInfo = new SerInfo(name, website, weibo);
   Intent intent = new Intent();
   Bundle bundle = new Bundle();
   bundle.putSerializable("serinfo", serInfo);
   intent.setClass(MainActivity.this, ResultActivity.class);
   intent.putExtras(bundle);
   startActivity(intent);

用Serializable 接收Object:

SerInfo serInfo = (SerInfo) getIntent().getSerializableExtra(<span class="string">"serinfo"</span>);

这里讲的只是用Serializable这种方式传递数据,当然还有一种方式用Parcelable接口实现。

[!--infotagslink--]

相关文章

  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • JavaScript判断浏览器及其版本信息

    本篇文章主要分享了通过window.navigator来判断浏览器及其版本信息的实例代码。具有一定的参考价值,下面跟着小编一起来看下吧...2017-01-23
  • js实现浏览器打印功能的示例代码

    这篇文章主要介绍了js如何实现浏览器打印功能,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...2020-07-15
  • Android开发中findViewById()函数用法与简化

    findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20
  • Android模拟器上模拟来电和短信配置

    如果我们的项目需要做来电及短信的功能,那么我们就得在Android模拟器开发这些功能,本来就来告诉我们如何在Android模拟器上模拟来电及来短信的功能。 在Android模拟...2016-09-20
  • 夜神android模拟器设置代理的方法

    夜神android模拟器如何设置代理呢?对于这个问题其实操作起来是非常的简单,下面小编来为各位详细介绍夜神android模拟器设置代理的方法,希望例子能够帮助到各位。 app...2016-09-20
  • android自定义动态设置Button样式【很常用】

    为了增强android应用的用户体验,我们可以在一些Button按钮上自定义动态的设置一些样式,比如交互时改变字体、颜色、背景图等。 今天来看一个通过重写Button来动态实...2016-09-20
  • js识别uc浏览器的代码

    其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
  • Android WebView加载html5页面实例教程

    如果我们要在Android应用APP中加载html5页面,我们可以使用WebView,本文我们分享两个WebView加载html5页面实例应用。 实例一:WebView加载html5实现炫酷引导页面大多...2016-09-20
  • 深入理解Android中View和ViewGroup

    深入理解Android中View和ViewGroup从组成架构上看,似乎ViewGroup在View之上,View需要继承ViewGroup,但实际上不是这样的。View是基类,ViewGroup是它的子类。本教程我们深...2016-09-20
  • Android自定义WebView网络视频播放控件例子

    下面我们来看一篇关于Android自定义WebView网络视频播放控件开发例子,这个文章写得非常的不错下面给各位共享一下吧。 因为业务需要,以下代码均以Youtube网站在线视...2016-10-02
  • Android用MemoryFile文件类读写进行性能优化

    java开发的Android应用,性能一直是一个大问题,,或许是Java语言本身比较消耗内存。本文我们来谈谈Android 性能优化之MemoryFile文件读写。 Android匿名共享内存对外A...2016-09-20
  • Android设置TextView竖着显示实例

    TextView默认是横着显示了,今天我们一起来看看Android设置TextView竖着显示如何来实现吧,今天我们就一起来看看操作细节,具体的如下所示。 在开发Android程序的时候,...2016-10-02
  • js代码判断浏览器种类IE、FF、Opera、Safari、chrome及版本

    第一种,只区分浏览器,不考虑版本 复制代码 代码如下:function myBrowser(){ var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串 var isOpera = userAgent.indexOf("Opera") > -1; if (isOp...2014-05-31
  • android.os.BinderProxy cannot be cast to com解决办法

    本文章来给大家介绍关于android.os.BinderProxy cannot be cast to com解决办法,希望此文章对各位有帮助呀。 Android在绑定服务的时候出现java.lang.ClassCastExc...2016-09-20
  • 详解Vue Cli浏览器兼容性实践

    这篇文章主要介绍了详解Vue Cli浏览器兼容性实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-09
  • Android 实现钉钉自动打卡功能

    这篇文章主要介绍了Android 实现钉钉自动打卡功能的步骤,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下...2021-03-15
  • Android 开发之布局细节对比:RTL模式

    下面我们来看一篇关于Android 开发之布局细节对比:RTL模式 ,希望这篇文章对各位同学会带来帮助,具体的细节如下介绍。 前言 讲真,好久没写博客了,2016都过了一半了,赶紧...2016-10-02
  • Android中使用SDcard进行文件的读取方法

    首先如果要在程序中使用sdcard进行存储,我们必须要在AndroidManifset.xml文件进行下面的权限设置: 在AndroidManifest.xml中加入访问SDCard的权限如下: <!--...2016-09-20
  • Android开发之PhoneGap打包及错误解决办法

    下面来给各位简单的介绍一下关于Android开发之PhoneGap打包及错误解决办法,希望碰到此类问题的同学可进入参考一下哦。 在我安装、配置好PhoneGap项目的所有依赖...2016-09-20