android手机开发平台搭建
初学Android,以便记录学习过程,增强学习效果。
首先需要加入权限
代码如下 | 复制代码 |
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> |
检查网络状态代码如下
代码如下 | 复制代码 |
public boolean CheckNetworkState()
|
效果如下,用户可以点击确定来设置网络,比如启动wifi
-------------------------------------------------------------------------------------------------
如果希望网络连接时做一些事情的话,需要判断当前网络状态是否为true,为真则进行一些操作,否则设置网络。还可以用另外一种方式,其实差不多
代码如下 | 复制代码 |
//setnetwork
|
然后通过判断如果当前状态可用则执行相关代码,不可用则设置网络
代码如下 | 复制代码 |
if(isNetworkAvailable()) |
这篇文章中已经介绍了网络状态的判断,但是测试后发现用此方法只能够判断WIFI是否连接,而现在的智能机可以是wifi、3G、甚至2G。那么如果用上面的方法就不行了需要进行一下修改,使其在网络不连接(无论wifi、3G、2G)的时候也可以判断。代码如下
代码如下 | 复制代码 |
//Check network public void CheckNetworkState() { boolean flag = false; ConnectivityManager manager = (ConnectivityManager)getSystemService( Context.CONNECTIVITY_SERVICE); State mobile = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState(); State wifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState(); //如果3G、wifi、2G等网络状态是连接的,则退出,否则显示提示信息进入网络设置界面 if(mobile == State.CONNECTED||mobile==State.CONNECTING) return; if(wifi == State.CONNECTED||wifi==State.CONNECTING) return; showTips(); } private void showTips() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setIcon(android.R.drawable.ic_dialog_alert); builder.setTitle(R.string.netstate); builder.setMessage(R.string.setnetwork); builder.setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // 如果没有网络连接,则进入网络设置界面 startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS)); } }); builder.setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); builder.create(); builder.show(); } |
种方式更加简单,也更加有用,当然第一篇也有可取之处,可以加入3G状态检查即可
注意:别忘了加上权限
代码如下 | 复制代码 |
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> |
Javamail-Android配置步骤:
下载Android版本JavaMail包,additional.jar、mail.jar和activation.jar,下载地址JavaMail-Android
在项目与src同一目录级别下,新建文件夹lib,将下载的3个jar包放入该文件夹
右键->Properties->Java Build Path->Libraries,选择Add External JARs,找到项目下lib目录的3个jar包
我的代码有三个类:
第一个类:MailSenderInfo.java
代码如下 | 复制代码 |
package com.util.mail; /** * 发送邮件需要使用的基本信息 */ import java.util.Properties; public class MailSenderInfo { // 发送邮件的服务器的IP和端口 private String mailServerHost; private String mailServerPort = "25"; // 邮件发送者的地址 private String fromAddress; // 邮件接收者的地址 private String toAddress; // 登陆邮件发送服务器的用户名和密码 private String userName; private String password; // 是否需要身份验证 private boolean validate = false; // 邮件主题 private String subject; // 邮件的文本内容 private String content; // 邮件附件的文件名 private String[] attachFileNames; /** * 获得邮件会话属性 */ public Properties getProperties(){ Properties p = new Properties(); p.put("mail.smtp.host", this.mailServerHost); p.put("mail.smtp.port", this.mailServerPort); p.put("mail.smtp.auth", validate ? "true" : "false"); return p; } public String getMailServerHost() { return mailServerHost; } public void setMailServerHost(String mailServerHost) { this.mailServerHost = mailServerHost; } public String getMailServerPort() { return mailServerPort; } public void setMailServerPort(String mailServerPort) { this.mailServerPort = mailServerPort; } public boolean isValidate() { return validate; } public void setValidate(boolean validate) { this.validate = validate; } public String[] getAttachFileNames() { return attachFileNames; } public void setAttachFileNames(String[] fileNames) { this.attachFileNames = fileNames; } public String getFromAddress() { return fromAddress; } public void setFromAddress(String fromAddress) { this.fromAddress = fromAddress; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getToAddress() { return toAddress; } public void setToAddress(String toAddress) { this.toAddress = toAddress; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getSubject() { return subject; } public void setSubject(String subject) { this.subject = subject; } public String getContent() { return content; } public void setContent(String textContent) { this.content = textContent; } } |
第二个类:MultiMailsender.java
代码如下 | 复制代码 |
package com.util.mail; import java.util.Date; import javax.mail.Address; /** // Message.RecipientType.TO属性表示接收者的类型为TO |
第三个类:
代码如下 | 复制代码 |
MyAuthenticator.java package com.util.mail; |
下面给出使用上面三个类的代码:
代码如下 | 复制代码 |
public static void main(String[] args){ //这个类主要是设置邮件 MultiMailSenderInfo mailInfo = new MultiMailSenderInfo(); mailInfo.setMailServerHost("smtp.163.com"); mailInfo.setMailServerPort("25"); mailInfo.setValidate(true); mailInfo.setUserName("xxx@163.com"); mailInfo.setPassword("**********");//您的邮箱密码 mailInfo.setFromAddress("xxx@163.com"); mailInfo.setToAddress("xxx@163.com"); mailInfo.setSubject("设置邮箱标题"); mailInfo.setContent("设置邮箱内容"); String[] receivers = new String[]{"***@163.com", "***@tom.com"}; String[] ccs = receivers; mailInfo.setReceivers(receivers); mailInfo.setCcs(ccs); //这个类主要来发送邮件 MultiMailsender sms = new MultiMailsender(); sms.sendTextMail(mailInfo);//发送文体格式 MultiMailsender.sendHtmlMail(mailInfo);//发送html格式 MultiMailsender.sendMailtoMultiCC(mailInfo);// |
发送抄送 最后,给出朋友们几个注意的地方:
1、使用此代码你可以完成你的javamail的邮件发送功能、发多个邮箱。三个类缺一不可。
2、这三个类我打包是用的com.util.mail包,如果不喜欢,你可以自己改,但三个类文件必须在同一个包中
3、不要使用你刚刚注册过的邮箱在程序中发邮件,如果你的163邮箱是刚注册不久,那你就不要使用“smtp.163.com”。因为你发不出去。刚注册的邮箱是不会给你这种权限的,也就是你不能通过验证。要使用你经常用的邮箱,而且时间比较长的。
4、另一个问题就是mailInfo.setMailServerHost("smtp.163.com");与mailInfo.setFromAddress("xxx@163.com");这两句话。即如果你使用163smtp服务器,那么发送邮件地址就必须用163的邮箱,如果不的话,是不会发送成功的。
5、关于javamail验证错误的问题,网上的解释有很多,但我看见的只有一个。就是我的第三个类。你只要复制全了代码,我想是不会有问题的。
6、 然后在Android项目中添加网络访问权限
代码如下 | 复制代码 |
<uses-permission android:name="android.permission.INTERNET"></uses-permission> |
一、首先简单介绍一下:ManagedQuery()
参数:
1.URI:content provider需要返回的资源索引。例如:收信箱:
代码如下 | 复制代码 |
content://sms/inbox |
2.Projection: 用于标识有哪些columns需要包含在返回数据中。例如:id号,地址,消息体,读取状态。。。
代码如下 | 复制代码 |
new String[] {"_id", "address", "body", "read"} |
3.Selection:作为查询符合条件的过滤参数。
代码如下 | 复制代码 |
"address=? and read=?" |
4.SelectionArgs:同上
代码如下 | 复制代码 |
new String[] { "15061978220", "1" } |
5.SortOrder:对于返回信息进行排列。
代码如下 | 复制代码 |
"date desc" |
面临的两个问题:1.如何提取消息体body。
2.如何提取body中的有效信息。
代码如下 | 复制代码 |
String smsbody = cursor.getString(cursor.getColumnIndex("body"));
String code = smsbody.substring(smsbody.indexOf(",") +1, smsbody.indexOf(".")); |
//用subString提取子字符串,以“,”开始,“。”结束。用indexOf("")取得字符串的位置。
现在贴上源程序
代码如下 | 复制代码 |
package my.learn.ReadSMS; import android.app.Activity; public class ReadSMSActivity extends Activity { /** Called when the activity is first created. */ public void doReadSMS(View view) { String smsbody = cursor } } |
在没有真机的情况下,我们可以通过模拟器来实现。
首先在DDMS的模式下,“Emulator Control” ,"InComing number",选择"SMS",填入需要的“Message”,点击“send”按钮,这样模拟器就可以接收到短信了。
程序运行结果:
今天我们来讲述一下简单的方法就是android开发之应用程序全屏实现方法,有需要的同学可以参考一下本文章。一般Android的应用启动时都有欢迎界面,类似QQHD启动那样。比较大方绚丽。心动不如行动,有时间自己也来实现类似的效果,嘿嘿。
观察发现QQHD的欢迎界面是全屏的,这个好办。下面就Android应用调用全屏方式说明一下。
一般使Android程序的画面充满整个屏幕,有两种方法。
代码如下
复制代码
@Override
protected void onCreate(Bundle savedInstanceState)
{
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
setContentView(R.layout.welcome);
}
.配置AndroidManifest.xml
代码如下
复制代码
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".Welcome"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".AboutApp"
android:label="@string/aboutapp_title"
android:theme="@android:style/Theme.Dialog"
/>
</application>
相关文章
- 支付宝支付在国内算是大家了,我们到处都可以使用支付宝了,下文整理介绍的是在安卓app应用中使用支付宝进行支付的开发例子。 之前讲了一篇博客关与支付宝集成获取...2016-09-20
- PHP+Ajax有许多的功能都会用到它小编今天就有使用PHP+Ajax实现的一个微信登录功能了,下面我们来看一个PHP+Ajax手机发红包的程序例子,具体如下所示。 PHP发红包基本...2016-11-25
- 下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
- 华为手机怎么恢复已卸载的应用?有时候我们在使用华为手机的时候,想知道卸载的应用怎么恢复,这篇文章主要介绍了华为手机恢复应用教程,需要的朋友可以参考下...2020-06-29
- 很多用安卓智能手机的朋友是用九宫格锁屏,网上也有暴力删除手机图形锁的方法,不过我们可以用程序来破解。本文只提供技术学习,不能干坏事 安卓手机的图形锁(九宫格)...2016-09-20
- 华为手机怎么开启双时钟?华为手机是可以设置双时钟的,如果来回在两个有时差的地方工作,是可以设置双时钟显示,下面我们就来看看华为添加双时钟的技巧,需要的朋友可以参考下...2020-12-08
安卓手机wifi打不开修复教程,安卓手机wifi打不开解决方法
手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21Android开发中findViewById()函数用法与简化
findViewById方法在android开发中是获取页面控件的值了,有没有发现我们一个页面控件多了会反复研究写findViewById呢,下面我们一起来看它的简化方法。 Android中Fin...2016-09-20- 如果我们的项目需要做来电及短信的功能,那么我们就得在Android模拟器开发这些功能,本来就来告诉我们如何在Android模拟器上模拟来电及来短信的功能。 在Android模拟...2016-09-20
- 夜神android模拟器如何设置代理呢?对于这个问题其实操作起来是非常的简单,下面小编来为各位详细介绍夜神android模拟器设置代理的方法,希望例子能够帮助到各位。 app...2016-09-20
- 为了增强android应用的用户体验,我们可以在一些Button按钮上自定义动态的设置一些样式,比如交互时改变字体、颜色、背景图等。 今天来看一个通过重写Button来动态实...2016-09-20
- 如果我们要在Android应用APP中加载html5页面,我们可以使用WebView,本文我们分享两个WebView加载html5页面实例应用。 实例一:WebView加载html5实现炫酷引导页面大多...2016-09-20
- 深入理解Android中View和ViewGroup从组成架构上看,似乎ViewGroup在View之上,View需要继承ViewGroup,但实际上不是这样的。View是基类,ViewGroup是它的子类。本教程我们深...2016-09-20
- 下面我们来看一篇关于Android自定义WebView网络视频播放控件开发例子,这个文章写得非常的不错下面给各位共享一下吧。 因为业务需要,以下代码均以Youtube网站在线视...2016-10-02
- java开发的Android应用,性能一直是一个大问题,,或许是Java语言本身比较消耗内存。本文我们来谈谈Android 性能优化之MemoryFile文件读写。 Android匿名共享内存对外A...2016-09-20
- TextView默认是横着显示了,今天我们一起来看看Android设置TextView竖着显示如何来实现吧,今天我们就一起来看看操作细节,具体的如下所示。 在开发Android程序的时候,...2016-10-02
android.os.BinderProxy cannot be cast to com解决办法
本文章来给大家介绍关于android.os.BinderProxy cannot be cast to com解决办法,希望此文章对各位有帮助呀。 Android在绑定服务的时候出现java.lang.ClassCastExc...2016-09-20- 这篇文章主要介绍了Android 实现钉钉自动打卡功能的步骤,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下...2021-03-15
- 下面我们来看一篇关于Android 开发之布局细节对比:RTL模式 ,希望这篇文章对各位同学会带来帮助,具体的细节如下介绍。 前言 讲真,好久没写博客了,2016都过了一半了,赶紧...2016-10-02
- 首先如果要在程序中使用sdcard进行存储,我们必须要在AndroidManifset.xml文件进行下面的权限设置: 在AndroidManifest.xml中加入访问SDCard的权限如下: <!--...2016-09-20