Android通话意图错误的电话号码

时间:2014-04-07 12:54:47

标签: android android-intent android-view android-button

我试图让按钮(R.id.buttonring)拨打在textview中输入的名为tvTelefon的电话号码。但是,当我点击该按钮时,我的手机正试图拨打电话" w4126848130,511290,549"而不是在textview中输入的电话号码。怎么想的怎么样?我没有收到任何错误消息,所以我一无所知!谢谢!

public class Activity2 extends Activity {

    public static final String SPARAD_DATA = "sparadData";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_2);

        SharedPreferences sp = getSharedPreferences(SPARAD_DATA, Context.MODE_PRIVATE);
        TextView tvRubrik = (TextView)findViewById(R.id.textViewrubrik);
        tvRubrik.setText(sp.getString("rubrik", "Rubrik saknas"));
        TextView tvNamn = (TextView)findViewById(R.id.textViewnamn);
        tvNamn.setText(sp.getString("namn", "Namn saknas"));
        TextView tvText = (TextView)findViewById(R.id.textViewtext);
        tvText.setText(sp.getString("text", "Text saknas"));
        final TextView tvTelefon = (TextView)findViewById(R.id.textViewtelefon);
        tvTelefon.setText(sp.getString("telefon", "Telefon saknas"));
        TextView tvPris = (TextView)findViewById(R.id.textViewpris);
        tvPris.setText(sp.getString("pris", "Pris saknas"));

    Button r = (Button)findViewById(R.id.buttonring);
    r.setOnClickListener (new View.OnClickListener() {
        Intent call = new Intent(Intent.ACTION_DIAL);
        @Override
        public void onClick(View v){
            call.setData(Uri.parse("tel:" +tvTelefon));
            startActivity(call);
        }
        });
    }
}

2 个答案:

答案 0 :(得分:1)

轻微的改变可能会对您有所帮助:

call.setData(Uri.parse("tel:" +tvTelefon));

应该是:

call.setData(Uri.parse("tel:" +tvTelefon.getText().toString()));

您正在传递对象引用,获取您放入其中的字符串。

答案 1 :(得分:0)

实际上,我如何理解您发布的代码,您可以直接从您的偏好中获取电话号码。试试这个:

call.setData(Uri.parse("tel:" + sp.getString("telefon", "")));

而不是:

call.setData(Uri.parse("tel:" +tvTelefon));