android手机开发之读取收件箱中指定号码短信

 更新时间:2016年9月20日 20:01  点击:1478
本文章介绍一下关于android手机开发之读取收件箱中指定号码短信,有需要的同学可以参考一下下哈。

一、首先简单介绍一下: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;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class ReadSMSActivity extends Activity {
    // final String SMS_URL_INBOX="content://sms/inbox";
    private Button mybtn;
    private TextView mtTxt;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mybtn = (Button) findViewById(R.id.clickButton);
        mtTxt = (TextView) findViewById(R.id.showTxt);
    }

    public void doReadSMS(View view) {
        Cursor cursor = null;// 光标
        cursor = managedQuery(Uri.parse("content://sms/inbox"), new String[] {
                "_id", "address", "body", "read" }, "address=? and read=?",
                new String[] { "15061978220", "1" }, "date desc");
        if (cursor != null) {// 如果短信为已读模式
            cursor.moveToFirst();
            if (cursor.moveToFirst()) {

                String smsbody = cursor
                        .getString(cursor.getColumnIndex("body"));
                String code = smsbody.substring(smsbody.indexOf(",") + 1,
                        smsbody.indexOf("."));
                mtTxt.setText(code.toString());
            }

        }

    }
}


在没有真机的情况下,我们可以通过模拟器来实现。

首先在DDMS的模式下,“Emulator Control” ,"InComing number",选择"SMS",填入需要的“Message”,点击“send”按钮,这样模拟器就可以接收到短信了。

程序运行结果:

本文章来介绍一下关于android之利用javamail发送邮件,有需要的同学可以看看哈。

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 java.util.Properties;

import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;

/**
 * 发送邮件给多个接收者、抄送邮件
 */
public class MultiMailsender {

   
    /**
      * 以文本格式发送邮件
      * @param mailInfo 待发送的邮件的信息
      */
        public boolean sendTextMail(MultiMailSenderInfo mailInfo) {
          // 判断是否需要身份认证
          MyAuthenticator authenticator = null;
          Properties pro = mailInfo.getProperties();
          if (mailInfo.isValidate()) {
          // 如果需要身份认证,则创建一个密码验证器
            authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());
          }
          // 根据邮件会话属性和密码验证器构造一个发送邮件的session
          Session sendMailSession = Session.getDefaultInstance(pro,authenticator);
          try {
          // 根据session创建一个邮件消息
          Message mailMessage = new MimeMessage(sendMailSession);
          // 创建邮件发送者地址
          Address from = new InternetAddress(mailInfo.getFromAddress());
          // 设置邮件消息的发送者
          mailMessage.setFrom(from);
          // 创建邮件的接收者地址,并设置到邮件消息中
          Address[] tos = null;
          String[] receivers = mailInfo.getReceivers();
          if (receivers != null){
              // 为每个邮件接收者创建一个地址
              tos = new InternetAddress[receivers.length + 1];
              tos[0] = new InternetAddress(mailInfo.getToAddress());
              for (int i=0; i<receivers.length; i++){
                  tos[i+1] = new InternetAddress(receivers[i]);
              }
          } else {
              tos = new InternetAddress[1];
              tos[0] = new InternetAddress(mailInfo.getToAddress());
          }

          // Message.RecipientType.TO属性表示接收者的类型为TO
          mailMessage.setRecipients(Message.RecipientType.TO,tos);
          // 设置邮件消息的主题
          mailMessage.setSubject(mailInfo.getSubject());
          // 设置邮件消息发送的时间
          mailMessage.setSentDate(new Date());
          // 设置邮件消息的主要内容
          String mailContent = mailInfo.getContent();
          mailMessage.setText(mailContent);
          // 发送邮件
          Transport.send(mailMessage);
          return true;
          } catch (MessagingException ex) {
              ex.printStackTrace();
          }
          return false;
        }
    /**
     * 发送邮件给多个接收者,以Html内容
     * @param mailInfo    带发送邮件的信息
     * @return
     */
    public static boolean sendMailtoMultiReceiver(MultiMailSenderInfo mailInfo){
        MyAuthenticator authenticator = null;
        if (mailInfo.isValidate()) {
            authenticator = new MyAuthenticator(mailInfo.getUserName(),
                    mailInfo.getPassword());
        }
        Session sendMailSession = Session.getInstance(mailInfo
                .getProperties(), authenticator);
        try {
            Message mailMessage = new MimeMessage(sendMailSession);
            // 创建邮件发送者地址
            Address from = new InternetAddress(mailInfo.getFromAddress());
            mailMessage.setFrom(from);
            // 创建邮件的接收者地址,并设置到邮件消息中
            Address[] tos = null;
            String[] receivers = mailInfo.getReceivers();
            if (receivers != null){
                // 为每个邮件接收者创建一个地址
                tos = new InternetAddress[receivers.length + 1];
                tos[0] = new InternetAddress(mailInfo.getToAddress());
                for (int i=0; i<receivers.length; i++){
                    tos[i+1] = new InternetAddress(receivers[i]);
                }
            } else {
                tos = new InternetAddress[1];
                tos[0] = new InternetAddress(mailInfo.getToAddress());
            }
            // 将所有接收者地址都添加到邮件接收者属性中
            mailMessage.setRecipients(Message.RecipientType.TO, tos);
           
            mailMessage.setSubject(mailInfo.getSubject());
            mailMessage.setSentDate(new Date());
            // 设置邮件内容
            Multipart mainPart = new MimeMultipart();
            BodyPart html = new MimeBodyPart();
            html.setContent(mailInfo.getContent(), "text/html; charset=GBK");
            mainPart.addBodyPart(html);
            mailMessage.setContent(mainPart);
            // 发送邮件
            Transport.send(mailMessage);
            return true;
        } catch (MessagingException ex) {
            ex.printStackTrace();
        }
        return false;
    }
   
    /**
     * 发送带抄送的邮件
     * @param mailInfo    待发送邮件的消息
     * @return
     */
    public static boolean sendMailtoMultiCC(MultiMailSenderInfo mailInfo){
        MyAuthenticator authenticator = null;
        if (mailInfo.isValidate()) {
            authenticator = new MyAuthenticator(mailInfo.getUserName(),
                    mailInfo.getPassword());
        }
        Session sendMailSession = Session.getInstance(mailInfo
                .getProperties(), authenticator);
        try {
            Message mailMessage = new MimeMessage(sendMailSession);
            // 创建邮件发送者地址
            Address from = new InternetAddress(mailInfo.getFromAddress());
            mailMessage.setFrom(from);
            // 创建邮件的接收者地址,并设置到邮件消息中
            Address to = new InternetAddress(mailInfo.getToAddress());
            mailMessage.setRecipient(Message.RecipientType.TO, to);
           
            // 获取抄送者信息
            String[] ccs = mailInfo.getCcs();
            if (ccs != null){
                // 为每个邮件接收者创建一个地址
                Address[] ccAdresses = new InternetAddress[ccs.length];
                for (int i=0; i<ccs.length; i++){
                    ccAdresses[i] = new InternetAddress(ccs[i]);
                }
                // 将抄送者信息设置到邮件信息中,注意类型为Message.RecipientType.CC
                mailMessage.setRecipients(Message.RecipientType.CC, ccAdresses);
            }
           
            mailMessage.setSubject(mailInfo.getSubject());
            mailMessage.setSentDate(new Date());
            // 设置邮件内容
            Multipart mainPart = new MimeMultipart();
            BodyPart html = new MimeBodyPart();
            html.setContent(mailInfo.getContent(), "text/html; charset=GBK");
            mainPart.addBodyPart(html);
            mailMessage.setContent(mainPart);
            // 发送邮件
            Transport.send(mailMessage);
            return true;
        } catch (MessagingException ex) {
            ex.printStackTrace();
        }
        return false;
    }
   
    /**
     * 发送多接收者类型邮件的基本信息
     */
    public static class MultiMailSenderInfo extends MailSenderInfo{
        // 邮件的接收者,可以有多个
        private String[] receivers;
        // 邮件的抄送者,可以有多个
        private String[] ccs;
       
        public String[] getCcs() {
            return ccs;
        }
        public void setCcs(String[] ccs) {
            this.ccs = ccs;
        }
        public String[] getReceivers() {
            return receivers;
        }
        public void setReceivers(String[] receivers) {
            this.receivers = receivers;
        }
    }
}

第三个类:

 代码如下 复制代码

MyAuthenticator.java

package com.util.mail;
 
import javax.mail.*;
  
public class MyAuthenticator extends Authenticator{
    String userName=null;
    String password=null;
     
    public MyAuthenticator(){
    }
    public MyAuthenticator(String username, String password) {
        this.userName = username;
        this.password = password;
    }
    protected PasswordAuthentication getPasswordAuthentication(){
        return new PasswordAuthentication(userName, password);
    }
}

下面给出使用上面三个类的代码:

 代码如下 复制代码
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>

今天我们来讲述一下简单的方法就是android开发之应用程序全屏实现方法,有需要的同学可以参考一下本文章。

一般Android的应用启动时都有欢迎界面,类似QQHD启动那样。比较大方绚丽。心动不如行动,有时间自己也来实现类似的效果,嘿嘿。QQ2011

观察发现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>

安卓示例

本文章来介绍了关于手机开发之android来实现android照相及照片功能,有需要学习的同学可以参考一下下哈。
 代码如下 复制代码
package com.android.cist.camera.view; 
import java.io.ByteArrayOutputStream; 
import java.io.InputStream; 
import java.util.HashMap; 
import java.util.Map; 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.content.ContentResolver; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Handler; 
import android.os.Message; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 
import android.widget.Toast; 
import com.android.cist.R; 
import com.android.cist.network.HttpUtil; 
import com.android.cist.network.form.FormFile; 
import com.android.cist.network.form.HttpFormUtil; 
import com.android.cist.util.ApplicationUtil; 
import com.android.cist.util.ImageUtil; 
public class CameraActivity extends Activity implements OnClickListener{ 
    private ImageView preview; 
    private EditText carNo; 
    private EditText addres; 
    private EditText type; 
    private Button back; 
    private Button submit; 
    private Button capture; 
    private Button reCapture; 
    private OnClickListener imgViewListener; 
    private Bitmap myBitmap; 
    private byte[] mContent; 
    private Handler handler; 
    String returnString; 
    private CalendarView happenDate; 
    private static final int REQUEST_CAMERA = 1; 
    private static final int REQUEST_CALENDAR = 2; 
    @ Override 
    public void onCreate ( Bundle savedInstanceState ) 
    { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.camera); 
        setUpViews(); 
        setUpListeners(); 
        ApplicationUtil.getInstance().addActivity(this); 
    } 
    @ Override 
    protected void onActivityResult ( int requestCode , int resultCode , Intent data ) 
    { 
        super.onActivityResult(requestCode, resultCode, data); 
        ContentResolver resolver = getContentResolver(); 
        /**
         * 因为两种方式都用到了startActivityForResult方法,
         * 这个方法执行完后都会执行onActivityResult方法, 所以为了区别到底选择了那个方式获取图片要进行判断,
         * 这里的requestCode跟startActivityForResult里面第二个参数对应
         */ 
        if (requestCode == 0) 
        { 
            try 
            { 
                // 获得图片的uri 
                Uri originalUri = data.getData(); 
                // 将图片内容解析成字节数组 
                mContent = readStream(resolver.openInputStream(Uri.parse(originalUri.toString()))); 
                // 将字节数组转换为ImageView可调用的Bitmap对象 
                myBitmap = getPicFromBytes(mContent, null); 
                // //把得到的图片绑定在控件上显示 
                preview.setImageBitmap(myBitmap); 
            } catch ( Exception e ) 
            { 
                System.out.println(e.getMessage()); 
            } 
        } else if (requestCode == REQUEST_CAMERA){ 
            try 
            { 
                super.onActivityResult(requestCode, resultCode, data); 
                Bundle extras = data.getExtras(); 
                myBitmap = (Bitmap) extras.get("data"); 
                ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
                myBitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); 
                mContent = baos.toByteArray(); 
            } catch ( Exception e ) 
            { 
                e.printStackTrace(); 
            } 
            // 把得到的图片绑定在控件上显示 
            preview.setImageBitmap(ImageUtil.toRoundCorner(myBitmap, 10));//把拍摄的照片转成圆角显示在预览控件上 
        }else if(requestCode==REQUEST_CALENDAR){ 
            if(resultCode == RESULT_OK){ 
                happenDate.setCalendar(data.getIntExtra("year", 1900), data.getIntExtra("month", 0), data.getIntExtra("day", 1)); 
            } 
        } 
    } 
    public static Bitmap getPicFromBytes ( byte[] bytes , BitmapFactory.Options opts ) 
    { 
        if (bytes != null) 
            if (opts != null) 
                return BitmapFactory.decodeByteArray(bytes, 0, bytes.length, opts); 
            else 
                return BitmapFactory.decodeByteArray(bytes, 0, bytes.length); 
        return null; 
    } 
    public static byte[] readStream ( InputStream inStream ) throws Exception 
    { 
        byte[] buffer = new byte[1024]; 
        int len = -1; 
        ByteArrayOutputStream outStream = new ByteArrayOutputStream(); 
        while ((len = inStream.read(buffer)) != -1) 
        { 
            outStream.write(buffer, 0, len); 
        } 
        byte[] data = outStream.toByteArray(); 
        outStream.close(); 
        inStream.close(); 
        return data; 
    } 
    @Override 
    public void onClick(View v) { 
        int id = v.getId(); 
        switch(id){ 
            case R.id.capture:{ 
                final CharSequence[] items = 
                { "相册", "拍照" }; 
                AlertDialog dlg = new AlertDialog.Builder(CameraActivity.this).setTitle("选择图片").setItems(items, 
                        new DialogInterface.OnClickListener() 
                        { 
                            public void onClick ( DialogInterface dialog , int item ) 
                            { 
                                // 这里item是根据选择的方式, 
                                // 在items数组里面定义了两种方式,拍照的下标为1所以就调用拍照方法 
                                if (item == 1){ 
                                    Intent getImageByCamera = new Intent("android.media.action.IMAGE_CAPTURE"); 
                                    startActivityForResult(getImageByCamera, REQUEST_CAMERA); 
                                } else{ 
                                    Intent getImage = new Intent(Intent.ACTION_GET_CONTENT); 
                                    getImage.addCategory(Intent.CATEGORY_OPENABLE); 
                                    getImage.setType("image/jpeg"); 
                                    startActivityForResult(getImage, 0); 
                                } 
                            } 
                        }).create(); 
                dlg.show(); 
            } 
            break; 
            /*case R.id.reCapture:{
                final CharSequence[] items =
                { "相册", "拍照" };
                AlertDialog dlg = new AlertDialog.Builder(CameraActivity.this).setTitle("选择图片").setItems(items,
                        new DialogInterface.OnClickListener()
                        {
                            public void onClick ( DialogInterface dialog , int item )
                            {
                                // 这里item是根据选择的方式,
                                // 在items数组里面定义了两种方式,拍照的下标为1所以就调用拍照方法
                                if (item == 1)
                                {
                                    Intent getImageByCamera = new Intent("android.media.action.IMAGE_CAPTURE");
                                    startActivityForResult(getImageByCamera, 1);
                                } else
                                {
                                    Intent getImage = new Intent(Intent.ACTION_GET_CONTENT);
                                    getImage.addCategory(Intent.CATEGORY_OPENABLE);
                                    getImage.setType("image/jpeg");
                                    startActivityForResult(getImage, 0);
                                }
                            }
                        }).create();
                dlg.show();
            }
            break;*/ 
            case R.id.submit:{ 
                new PostThread().start();//开启线程提交数据 
            } 
            break; 
            case R.id.back:{ 
                CameraActivity.this.finish();//返回,销毁当前Activity 
            } 
            break; 
            default: 
            break; 
        } 
    } 

本文章详细的介绍了关于android安装与卸载apk文件模拟程序,有要学习开发android软件包的朋友可以参考一下本文章先在电脑测试啊。

我们在安装apk时一共分为四步
  
  一:首先需要启动模拟器
  二:start->运行->CMD
  三:进入andoridsdk下面的tools目录
  四:adbinstallc:*.apk(说明:“c:*.apk”是要安装的文件的路径)其实最重要的就是这步了。大家可要记住了,因为这个你要是错了的话,那前面的做的一切工作就都白费了。
  
  效果图:

我们在来看看怎么卸载apk的步骤:
  
  一:首先需要启动模拟器
  二:start->运行->CMD
  三:进入andoridsdk下面的tools目录//大家其实看到了安装与卸载前三步都是一样的,所以大家主要记住的就是后面的几个步骤,希望大家加油。
  四:adbshell两个单词中间都有空格
  五:cddata
  六:cdapp
  七:ls(说明,主要是针对不知道包下面的文件,可以列表显示出来)
  八:rm*.apk(说明:”*.apk”是你要卸载的apk包)还是这步最重要的,因为这步上实现的就是你要卸载那个apk这个很重要,如果你没有记住apk的名字,那你卸载做了,那你还得从新安装,这对你的工作就带来的很大的麻烦。大家一点要记住。
  
  效果图:

这样就可以卸载这个apk包了!大家看完了是不是感觉很简单呀,那么我们就自己动手实现一下吧,这个样才能对android模拟器(安装和卸载)apk.

[!--infotagslink--]

相关文章

  • 安卓手机app添加支付宝支付开发教程

    支付宝支付在国内算是大家了,我们到处都可以使用支付宝了,下文整理介绍的是在安卓app应用中使用支付宝进行支付的开发例子。 之前讲了一篇博客关与支付宝集成获取...2016-09-20
  • PHP+Ajax手机发红包的程序例子

    PHP+Ajax有许多的功能都会用到它小编今天就有使用PHP+Ajax实现的一个微信登录功能了,下面我们来看一个PHP+Ajax手机发红包的程序例子,具体如下所示。 PHP发红包基本...2016-11-25
  • Android子控件超出父控件的范围显示出来方法

    下面我们来看一篇关于Android子控件超出父控件的范围显示出来方法,希望这篇文章能够帮助到各位朋友,有碰到此问题的朋友可以进来看看哦。 <RelativeLayout xmlns:an...2016-10-02
  • 华为手机怎么恢复已卸载的应用?华为手机恢复应用教程

    华为手机怎么恢复已卸载的应用?有时候我们在使用华为手机的时候,想知道卸载的应用怎么恢复,这篇文章主要介绍了华为手机恢复应用教程,需要的朋友可以参考下...2020-06-29
  • 破解安卓手机上的九宫格锁方法步骤

    很多用安卓智能手机的朋友是用九宫格锁屏,网上也有暴力删除手机图形锁的方法,不过我们可以用程序来破解。本文只提供技术学习,不能干坏事 安卓手机的图形锁(九宫格)...2016-09-20
  • 华为手机怎么开启双时钟? 华为添加双时钟的技巧

    华为手机怎么开启双时钟?华为手机是可以设置双时钟的,如果来回在两个有时差的地方工作,是可以设置双时钟显示,下面我们就来看看华为添加双时钟的技巧,需要的朋友可以参考下...2020-12-08
  • 安卓手机wifi打不开修复教程,安卓手机wifi打不开解决方法

    手机wifi打不开?让小编来告诉你如何解决。还不知道的朋友快来看看。 手机wifi是现在生活中最常用的手机功能,但是遇到手机wifi打不开的情况该怎么办呢?如果手机wifi...2016-12-21
  • 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
  • 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
  • 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 实现钉钉自动打卡功能的步骤,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下...2021-03-15
  • Android 开发之布局细节对比:RTL模式

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

    首先如果要在程序中使用sdcard进行存储,我们必须要在AndroidManifset.xml文件进行下面的权限设置: 在AndroidManifest.xml中加入访问SDCard的权限如下: <!--...2016-09-20