startActivity方法会产生错误

时间:2016-08-05 08:31:54

标签: android

我正在尝试编写一个调用某个数字的简单应用程序。 我在清单中写了使用Call_Phone的权限,我的startActivity仍然标记为红色。 谁能知道如何解决这个问题?

package com.example.programmer.gate;

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

public class Gate extends ActionBarActivity {

    Button b;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_gate);

        b = (Button) findViewById(R.id.bt);


        b.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                Intent callIntent = new Intent(Intent.ACTION_CALL);
                callIntent.setData(Uri.parse("tel:123");
                **startActivity(callIntent);**
            }
        });
    }

   }

3 个答案:

答案 0 :(得分:0)

检查权限

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

答案 1 :(得分:0)

如果您的应用程序的targetSdkVersion大于22,那么它需要运行时权限。可能是你的应用程序中的错误。因此,请检查您的gradle文件以确认。我认为这有助于你。

答案 2 :(得分:0)

您的代码没问题

您需要在AndroidManifest.xml中添加用户权限

喜欢这个

     <uses-permission  android:name="android.permission.CALL_PHONE"/>