検索

ホームページ  >  に質問  >  本文

android - api23下报错“Call requires permission which may be rejected by user”

菜鸟求教如何解决在api23下编译出现的permission问题。

报错原代码如下

    button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(Intent.ACTION_CALL);
            intent.setData(Uri.parse("tel:10086"));
            startActivity(intent);
        }
 
    

startActivity(intent) 那出现错误提示: “Call requires permission which may be rejected by user”
在stackoverflow上查到是使用api23编译后出现的permission问题,并给出了解决代码。

if (mContext.checkSelfPermission(Manifest.permission.CALL_PHONE) == 

    PackageManager.PERMISSION_GRANTED) {
        Intent callIntent = new Intent(Intent.ACTION_CALL);
        callIntent.setData(Uri.parse("tel:" + phoneNumber));
        callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(callIntent);
    }
    

只是不太明白上述的代码如何修改后添加到MainActivity.....直接copy过去mContext会报错...求教应该怎么改呢?
如果代码修改成功后可以在6.0上运行,如何使应用在6.0以下正常运行呢?

伊谢尔伦伊谢尔伦2772日前645

全員に返信(2)返信します

  • PHPz

    PHPz2017-04-17 16:09:30

    mContext はコンテキスト オブジェクトであり、MainActivity の MainActivity.this です。バージョン判定を行う

    リーリー

    返事
    0
  • ringa_lee

    ringa_lee2017-04-17 16:09:30

    ここでは、まず現在の API バージョンを確認し、次に checkSelfPermission メソッドを使用する必要があるかどうかを決定する必要があります (このメソッドは、以前のバージョンの API では使用できません)。

    もちろん、サポート ライブラリの互換コードを直接使用することもでき、適応は完了しています。

    返事
    0
  • キャンセル返事