好的,所以我看了一下,并试图理解我发现的其他一些代码,但没有任何事情对我有用。我试图让用户点击textview并将它们带到他们的手机拨号盘。
这是Java:
public class Info extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.moreinfo);
Button appoint =(Button) findViewById(R.id.btnAppoint);
TextView phone =(TextView) findViewById(R.id.phoneTxt);
String url = phone.getText().toString();
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(url));
appoint.setOnClickListener(new OnClickListener () {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
startActivity(new Intent(Info.this, EmailContact.class));
}
});
phone.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:+"+phone.getText().toString().trim()));
startActivity(callIntent );
}
});
}
}
我也把android:clickable = true,所以我不知道这是不是问题。任何帮助将不胜感激!
答案 0 :(得分:2)
更改phone.getText().toString().trim()
以使用提供给onclick方法的View对象:
phone.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent callIntent = new Intent(Intent.ACTION_DIAL);
callIntent.setData(Uri.parse("tel:+"+((TextView)arg0).getText().toString().trim()));
startActivity(callIntent );
}
});
此外,如果您只想显示加载了电话号码的拨号器,则表示您使用了错误的意图操作,而Intent.ACTION_DIAL
代替Intent.ACTION_CALL
将显示拨号器。您正在使用的Intent.ACTION_CALL
实际上会启动电话,要使其正常工作,您需要为您的清单添加相应的权限:
<uses-permission android:name="android.permission.CALL_PHONE" />
答案 1 :(得分:1)
根据您的描述,它是红色的,因为如果您要在匿名obejct中使用类方法级别对象,则必须将该对象定义为final。
final TextView phone =(TextView) findViewById(R.id.phoneTxt);
为了进一步衡量,请确保您使用正确的权限在清单中执行呼叫操作:
<uses-permission android:name="android.permission.CALL_PHONE" />