我想通过一个按钮拨打电话,但这个错误出现在对话中

时间:2016-11-29 16:37:47

标签: android android-permissions phone-call

我是android工作室的新手。我正在研究我的大学项目,我制作了这个示例应用程序来打电话,因为我想在我的应用程序中使用此功能。但似乎有一个问题。它告诉我首先要求用户打电话的许可,我不知道该怎么做。任何人都可以帮我吗?

这是java代码。 MainActivity.java

package example.call;

import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
    private Button button;

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

        button = (Button)findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("197"));
                startActivity(callIntent);
            }
        });
    }
}

这是我在错误中得到的:

enter image description here

3 个答案:

答案 0 :(得分:1)

确保您已在Android Manifest文件中授予以下权限。     

另请查看此https://stackoverflow.com/questions/7882955/android-permission-call-phone-for-tablet以获取更多信息。

答案 1 :(得分:0)

     Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:197"));
    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(callIntent);

添加此权限检查(从工作室本身处理)。另外添加" tel:"在电话号码之前。否则可能会导致错误

答案 2 :(得分:0)

在应用内AndroidManifest文件的权限中添加以下行。

initDefaultClock()

在Android中,您需要获得用户的许可才能进行呼叫,访问互联网,访问联系人......