Android Studio startActvity 需要权限

Android Studio startActvity requires permission

我正在尝试执行调用特定号码的简单点击操作,我处于代码的最后阶段,看不出我做错了什么。目前它的 startActivity 操作似乎出现了错误,但我不知道为什么我看了多个教程,我可以看到任何不同之处。在 startActivity 上方时,它通知我需要调用权限?

 protected void onCreate(Bundle savedInstanceState) {


    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    super.onCreate(savedInstanceState);
   getSupportActionBar().hide();
    setContentView(R.layout.activity_home);
    //On load the program automatically hides the taskbar.

    // ATTENTION: This was auto-generated to implement the App Indexing API.
    // See https://g.co/AppIndexing/AndroidStudio for more information.
    client = new GoogleApiClient.Builder(this).addApi(AppIndex.API).build();


    Button b = (Button) this.findViewById(R.id.BTNCall);

    b.setOnClickListener(new View.OnClickListener() {

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



    });


}

我还在 android 清单中添加了权限

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

由于您是从 OnClickListener 执行此操作,"this" 指针引用您正在实施的 clickListener class,因此您需要获取对 activity 的引用,只需使用:

MyActivityClassName.this.startActivity() //Dont know your class name

那应该去掉红色突出显示。

如果您仍然遇到崩溃,我们将需要 logcat 输出来解决它。

希望对您有所帮助。

您应该将您的目标 SDK 版本设置为 22 级或以下,因为对于 23 级您需要在 运行 时询问用户的许可,查看 there 以获得更好的解释。