2014-05-06 37 views
0

我目前正在研究我的第二个程序,并使用Google地图进行电话呼叫,发送短信,发送电子邮件和显示位置信息。我为所有这些使用ImageButton。用户不需要输入任何数字或地址(不使用EditText来获取用户输入)。但是,它不起作用。在android中拨打电话号码(点击图标可以拨打电话)吗?

例如,当用户点击电话图标时,它会打电话。但是,我仍然需要用户输入(实际消息,而不是目的地号码或电子邮件地址)来发送短信和电子邮件。我可以做到这一点,如果我使用EditText。但是,如果不使用EditText,我不能这样做。我该怎么做呢?我已经在清单文件中添加了用户权限。

PhoneActivity的.java

public class PhoneActivity extends Activity { 

     ImageButton btnphonecall; 
     String phoneNumber = "091111111"; 

     @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
      setContentView(R.layout.activity_phone); 

      btnphonecall=(ImageButton)findViewById(R.id.imageButton1); 

      btnphonecall.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View arg0) { 
        // TODO Auto-generated method stub 

        Intent i = new Intent(Intent.ACTION_CALL); 
            i.setData(Uri.parse("091111111")); 
            PhoneActivity.this.startActivity(i); 
       //I've tried startActivity(i) along but still doesn't work 
       } 
      }); 
     } 

回答

0

试试这个:

Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+phoneNumber)); 
startActivity(callIntent); 
+0

非常感谢你!我只需要添加“tel:”哈哈。我花了3个小时弄清楚这个......大声笑我实际上是小疯狂.......非常感谢你~~~ – user3601310

2

使用此:

Uri number = Uri.parse("tel:"+091111111); 
Intent dial = new Intent(Intent.ACTION_CALL, 
            number); 
dial.setPackage("com.android.phone"); 
PhoneActivity.this.startActivity(dial); 
+0

,我不知道,如果它强制到指定包 –

+0

@Kirill :是的,我的朋友,如果你指定了这个,那么它就不是强制的由android默认拨号程序完成。 – Kishan