Java 我如何在android studio中通过按钮拨打edittext中给出的电话号码?
我需要拨打我在Java 我如何在android studio中通过按钮拨打edittext中给出的电话号码?,java,android,button,Java,Android,Button,我需要拨打我在edittext中指定的给定电话号码。但当我在输入号码后按下呼叫按钮时,没有响应 在edittext中输入号码后,只要按下呼叫按钮,我就需要直接从我的应用程序启动呼叫者窗口。朋友们,请帮帮我。同时让我知道我的代码有什么问题 非常感谢您在这件事上的时间和帮助 这是我的代码 MainActivity.java: import android.Manifest; import android.app.Activity; import android.content.Intent; imp
edittext
中指定的给定电话号码。但当我在输入号码后按下呼叫按钮时,没有响应
在edittext
中输入号码后,只要按下呼叫按钮,我就需要直接从我的应用程序启动呼叫者窗口。朋友们,请帮帮我。同时让我知道我的代码有什么问题
非常感谢您在这件事上的时间和帮助
这是我的代码
MainActivity.java:
import android.Manifest;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
EditText number;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button mDialButton = (Button) findViewById(R.id.btn_dial);
mDialButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
callNumber();
}
});
}
private String getPhoneNumber() {
number = (EditText) findViewById(R.id.number);
return number.getText().toString();
}
private void callNumber() {
Intent call = new Intent(Intent.ACTION_CALL);
call.setData(Uri.parse("tel:" + getPhoneNumber()));
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
// ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
// public void onRequestPermissionsResult(int requestCode, String[] permissions,
// int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}
startActivity(call);
}
}
AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="arun.com.phonecall">
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
您尚未请求权限。如果您还没有权限,则需要请求权限,而不是直接返回
您可以使用我的库轻松处理运行时权限。检查问题可能与权限有关,因为(从您的代码中)您没有正确地请求
操作调用的权限
阅读更多有关请求权限的信息
如果您不想拥有以下权限的业务,可以使用操作拨号
:
Intent intent = new Intent(Intent.ACTION_DIAL,
Uri.fromParts("tel", getPhoneNumber(), null));
首先检查Manifest.permission的运行时权限。打电话,然后您可以这样打电话
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:" + getPhoneNumber()));
startActivity(intent);
试试这个代码
public class MainActivity extends AppCompatActivity {
EditText number;
int REQUEST_PHONE_CALL = 1000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button mDialButton = (Button) findViewById(R.id.btn_dial);
mDialButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
callNumber();
}
});
}
private String getPhoneNumber() {
number = (EditText) findViewById(R.id.number);
return number.getText().toString();
}
private void callNumber() {
Intent call = new Intent(Intent.ACTION_CALL);
call.setData(Uri.parse("tel:" + getPhoneNumber()));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
&& checkSelfPermission(
Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(
new String[]{
Manifest.permission.CALL_PHONE},
REQUEST_PHONE_CALL);
}
else
{
startActivity(call);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case 1000:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Intent call = new Intent(Intent.ACTION_CALL);
call.setData(Uri.parse("tel:" + getPhoneNumber()));
startActivity(call);
} else {
Toast.makeText(MainActivity.this, "Permission is denied", Toast.LENGTH_SHORT).show();
}
break;
}
}
}
@reshma dhaduk,请在你的回答中添加一些解释。它将帮助其他用户。@Da1如果Reshma的回答对您有帮助,请接受它。
public class MainActivity extends AppCompatActivity {
EditText number;
int REQUEST_PHONE_CALL = 1000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button mDialButton = (Button) findViewById(R.id.btn_dial);
mDialButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
callNumber();
}
});
}
private String getPhoneNumber() {
number = (EditText) findViewById(R.id.number);
return number.getText().toString();
}
private void callNumber() {
Intent call = new Intent(Intent.ACTION_CALL);
call.setData(Uri.parse("tel:" + getPhoneNumber()));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
&& checkSelfPermission(
Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
requestPermissions(
new String[]{
Manifest.permission.CALL_PHONE},
REQUEST_PHONE_CALL);
}
else
{
startActivity(call);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case 1000:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Intent call = new Intent(Intent.ACTION_CALL);
call.setData(Uri.parse("tel:" + getPhoneNumber()));
startActivity(call);
} else {
Toast.makeText(MainActivity.this, "Permission is denied", Toast.LENGTH_SHORT).show();
}
break;
}
}
}