简单介绍下:
此工具专为填充通话记录使用,做手机测试的朋友最烦的是填充数据,要一个个填充,很麻烦,通话记录导入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