【发布时间】:2020-06-28 17:54:50
【问题描述】:
我正在尝试创建一个应用程序(计算器),它从联系人列表中获取该人的电话号码并保存它。该应用程序的目的是让它看起来像一个普通的计算器,你问你的受害者随机问题,比如他/她的出生日期、年龄、鞋码等,然后在两者之间添加随机数学运算符,让它看起来像你在做一个魔术......一旦你按下“=”来获得答案,之前存储的联系人列表中的电话号码应该出现在它的屏幕上。让它看起来像一个魔术。
但我一开始无法找到获取电话号码的方法
String number = c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
似乎不起作用,应用程序崩溃了
这是整个代码以防万一
public class MainActivity<string> extends AppCompatActivity {
private TextView Screen;
Intent intent = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI);
private final int PICK_CONTACT = 1;
public void callContacts(View v) {
Intent intent = new Intent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, PICK_CONTACT);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case (PICK_CONTACT):
if (resultCode == Activity.RESULT_OK) {
Uri contactData = data.getData();
Cursor c = managedQuery(contactData, null, null, null, null);
if (c.moveToFirst()) {
String number = c.getString(c.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
}
}
break;
}
}
private Button zero,one,two,three,four,five,six,seven,eight,nine,delete,dot,plus,minus,multiply,divide,equals;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Screen=findViewById(R.id.textView);
zero=findViewById(R.id.Button_0);
one=findViewById(R.id.Button_1);
two=findViewById(R.id.Button_2);
three=findViewById(R.id.Button_3);
four=findViewById(R.id.Button_4);
five=findViewById(R.id.Button_5);
six=findViewById(R.id.Button_6);
seven=findViewById(R.id.Button_7);
eight=findViewById(R.id.Button_8);
nine=findViewById(R.id.Button_9);
delete=findViewById(R.id.Button_delete);
dot=findViewById(R.id.Button_dot);
plus=findViewById(R.id.Button_add);
minus=findViewById(R.id.Button_subtract);
multiply=findViewById(R.id.Button_multiply);
divide=findViewById(R.id.Button_divide);
equals=findViewById(R.id.Button_result);
zero.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Screen.setText(Screen.getText() + "0");
}
});
one.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Screen.setText(Screen.getText() + "1");
}
});
two.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Screen.setText(Screen.getText() + "2");
}
});
three.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Screen.setText(Screen.getText() + "3");
}
});
four.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Screen.setText(Screen.getText() + "4");
}
});
five.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Screen.setText(Screen.getText() + "5");
}
});
six.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Screen.setText(Screen.getText() + "6");
}
});
seven.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Screen.setText(Screen.getText() + "7");
}
});
eight.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Screen.setText(Screen.getText() + "8");
}
});
nine.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Screen.setText(Screen.getText() + "9");
}
});
dot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Screen.setText(Screen.getText() + ".");
}
});
divide.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Screen.setText(Screen.getText() + " % ");
}
});
multiply.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Screen.setText(Screen.getText() + " x ");
}
});
minus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Screen.setText(Screen.getText() + "-");
}
});
plus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Screen.setText(Screen.getText() + "+");
}
});
delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(Screen.getText()!="") {
String text = Screen.getText().toString();
Screen.setText(text.substring(0, text.length() - 1));
}
}
});
delete.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Screen.setText(" ");
return false;
}
});
seven.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
startActivityForResult(intent, PICK_CONTACT);
return false;
}
});
}
}
【问题讨论】:
-
尝试在类下直接声明变量(作为实例变量)。