0

好的,所以我已经查看并尝试理解我发现的其他一些代码,但对我来说没有任何效果。我试图让用户点击 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 所以我不知道这是否是问题所在。任何帮助,将不胜感激!

4

2 回答 2

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" />
于 2013-08-04T21:58:59.870 回答
1

根据您的描述,它是红色的,因为如果您要在匿名对象中使用类方法级对象,则该对象必须定义为 final。

final TextView phone =(TextView) findViewById(R.id.phoneTxt);

为了进一步衡量,请确保您使用正确的权限在清单中执行调用操作:

<uses-permission android:name="android.permission.CALL_PHONE" />
于 2013-08-04T22:00:23.687 回答