测试工具--填充通话记录

这是一款专为填充手机通话记录设计的测试工具,简化了数据导入过程,特别是对Vcard(.vcf)文件的支持。工具操作简便,只需通过adb连接终端并在root环境下运行。对于公网手机和对讲机等特殊场景,该工具也能适应。使用前需确保设备已root,并可借助工具完成root操作。
摘要由CSDN通过智能技术生成

 

简单介绍下:

       此工具专为填充通话记录使用,做手机测试的朋友最烦的是填充数据,要一个个填充,很麻烦,通话记录导入Vcard(.vcf)文件也是相当麻烦,使用工具只需连接终端,adb root下即可(本工具是根据当前公司的产品和需求制定,可根据源码修改)
      终端安卓系统带的是双系统,普通的不需要此选项,我们自己使用的是公网手机,对讲机一般是专网/PDT,echat是产品的apk可忽略.
      使用前终端需要root,可以cmd界面进行adb root,每个产品root指令不同,也可以使用工具辅助root。

package toolUI;

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStreamReader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Statement;
import java.util.Random;
import java.util.Scanner;

import org.sqlite.JDBC;

import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;

import java.awt.Panel;
import java.awt.BorderLayout;
import java.awt.Dialog.ModalExclusionType;
import java.awt.FlowLayout;
import javax.swing.JLabel;
import javax.swing.DropMode;
import javax.swing.JScrollPane;

public class DBtlloview {
	//全局变量
	public JFrame frame;
//	JPanel container;
//	private JTextArea textArea;
//	private JTextField textField_RF;
//	private JTextField textField_number;
//	private JTextField textField_name;
//	private static Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
	private static JButton btn_Button_xuanzeDBfile=null;
	private JTextField jTextField;
//	private static JButton btn_Button_xieru;
//	private String mTotalContent;//文件内容
//	private File mDestFile;//目标文件
//	int ROM;//鼠标指定行数
//	String sum;//原来的行内容
	private JTextField textNumberField;
     /**
	 * Launch the application.启动应用程序
	 */
	public static void main(String[] args) throws Exception {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					DBtlloview window = new DBtlloview();
					window.frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
				
	 
	}


	/**
	 * Create the application.初始化
	 */
	public DBtlloview() {
		initialize();
	}

	/**
	 * Initialize the contents of the frame.
	 */
	private void initialize() {

		frame = new JFrame("享有盛誉之名");
		frame.setTitle("dsy通话记录填充工具V0.0.1");
		frame.setBounds(100, 100, 508, 432);
		frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		frame.getContentPane().setLayout(null);
		

		//选择按钮
		JButton btn_Button_xuanzeDBfile = new JButton("选择文件");
		btn_Button_xuanzeDBfile.setBounds(14, 32, 95, 22);
		frame.getContentPane().add(btn_Button_xuanzeDBfile);
		//文件路径显示框
		jTextField = new JTextField();
		jTextField.setText("D:\\");
		jTextField.setBounds(113, 33, 285, 21);
		frame.getContentPane().add(jTextField);
		jTextField.setColumns(10);
		
		//文件选择路径实现
	 	btn_Button_xuanzeDBfile.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				JFileChooser jChooser = new JFileChooser();
				jChooser.setDialogTitle("dengshengyu");
				int returnVal = jChooser.showOpenDialog(null);
				java.io.File file =jChooser.getSelectedFile();
				if (JFileChooser.APPROVE_OPTION == returnVal) {
					//需要传入的参数
					jTextField.setText(file.getAbsolutePath());
					String strPath = file.getAbsolutePath();
					System.out.println(strPath);
				 }
			}
    	});
	 	
	 	
	 	JLabel label = new JLabel("填充数量:");
	 	label.setBounds(34, 80, 75, 18);
	 	frame.getContentPane().add(label);
	 	//填充数量框
	 	textNumberField = new JTextField();
	 	textNumberField.setText("请输入正确数字");
		textNumberField.setColumns(10);
		textNumberField.setBounds(113, 78, 99, 21);
		frame.getContentPane().add(textNumberField);
		//只能输入数字
		textNumberField.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				if(textNumberField.getText().equals(null)){
					
				}
			}
			
		});
		//填充按钮
		JButton btn_Button_tianchong = new JButton("填充");
		btn_Button_tianchong.setBounds(218, 78, 99, 22);
		frame.getContentPane().add(btn_Button_tianchong);
		//填充实现
		btn_Button_tianchong.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent arg0) {
				// TODO Auto-generated method stub
				int Allanmber = Integer.parseInt(textNumberField.getText());//执行次数
				System.out.println("执行次数:"+Allanmber);
				int anumber = 1;
				int res=JOptionPane.showConfirmDialog(null, "若无calllog.db文件请取消", "盛誉提醒", JOptionPane.YES_NO_OPTION);		
		if(res==JOptionPane.YES_NO_OPTION){		
	         for(int j=0;j<Allanmber;j++){//执行输入的次数
				/**
				 * JDBC数据库连接
				 * */
					//转入路径
					String strPath = jTextField.getText();//db目标路径
				try {
					Class.forName("org.sqlite.JDBC");	
				    Connection conn = DriverManager.getConnection("jdbc:sqlite:"+strPath+"\\calllog.db"); //PC上的
//					Connection conn = DriverManager.getConnection
//							("jdbc:sqlite:/data/data/com.android.providers.contacts/databases/calllog.db");				   
					/*生成随机号码*/
					Random random = new Random();
					String number="";
					for(int i=0;i<6;i++){
						number+=random.nextInt(10);
					}
					System.out.print(number);
					String phonenumber = number; //手机号码是字符类似
					System.out.print("phonenumber"+phonenumber);
					// calls是表名称
					//严格按照这样的格式编写,数据表的分为字符和数字,红色(为null)和绿色的都是数字类型,白色的都是字符类型
							//insert into calls values(11,'333333',1,'','',1593485812233,0,null,2,0,'com.android.phone/com.android.services.telephony.TelephonyConnectionService','89860317147559839723','',0,-1,1,null,null,null,'CN',null,null,'','',null,null,0,null,'',1,1593486109999,null,null,null,null,null,null,0,null,0,0,0,0,0,0)
							String YESpublicsql = "insert into calls values("
							           + anumber + ",'" + phonenumber+"'"
							           + ",1,'1','1',0,0,0,0,0,'1','1','1',0,-1,1,0,0,0,'CN',0,0,'1','1',0,0,0,0,'1',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)";
							System.out.print("YESpublicsql:"+YESpublicsql);
					//insert into calls values(11,'333333',1,'','',1593485812233,0,null,2,0,'com.android.phone/com.android.services.telephony.TelephonyConnectionService','89860317147559839723','',0,-1,1,null,null,null,'CN',null,null,'','',null,null,0,null,'',1,1593486109999,null,null,null,null,null,null,0,null,0,0,0,0,0,0)
					//String sql = "insert into calls values("
					           + anumber + ",'" + phonenumber+"'"
					           + ",1,'','',1593485812233,0,null,2,0,'com.android.phone/com.android.services.telephony.TelephonyConnectionService','89860317147559839723','',0,-1,1,null,null,null,'CN',null,null,'','',null,null,0,null,'',1,1593486109999,null,null,null,null,null,null,0,null,0,0,0,0,0,0)";
					System.out.print("sql"+sql);
					anumber=anumber+1;
				    
					System.out.println("SQL语句:"+sql);
					Statement stmt = conn.createStatement();
					stmt.executeUpdate(sql);
				    conn.close();

				} catch (Exception e) {
					// TODO: handle exception
					e.printStackTrace();
				}
				
				
			 }//for
		  }else{
			  JOptionPane.sh
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

测试狂人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值