在学习运行时权限时学到了一个向用户申请权限的方法ActivityCompat.requestPermissions(),这个方法接收三个参数,分别是Activity的实例、String数组、请求码,该方法源码定义具体如下
public static void requestPermissions(Activity activity,String[] permissions,int requestCode)
从上面我们知道这个方法的第二个参数接收是一个存放String数据类型的数组。现在我想向用户申请一个拨打电话的权限,代码如下
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button makeCall= (Button) findViewById(R.id.make_call);
makeCall.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
//判断用户是否已经授权,未授权则向用户申请授权,已授权则直接进行呼叫操作
if(ContextCompat.checkSelfPermission(MainActivity.this,"Manifest.permission.CALL_PHONE")
!= PackageManager.PERMISSION_GRANTED)
{
//注意第二个参数没有双引号
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CALL_PHONE},1);
}
else
{
//call()是封装好的拨打电话的方法
call();
}
}
});
}
关于其中的代码行(如下)
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CALL_PHONE},1);
我比较疑惑的是既然第二个参数传入的是字符串数组,那么为什么其中的值是直接写的Manifest.permission.CALL_PHONE
而不是加了双引号的"Manifest.permission.CALL_PHONE"
,并且我在eclipse中用Java代码试验了一下,发现在Java中,如果字符串数组中存放的值不加双引号限制为字符串是会报错的,但是在Android中好像并没有这个现象。
希望有了解的能够帮我解决这个问题,谢谢。
La raison est qu'il existe un tel code source sous le package Manifest.permission
Comme l’a répondu le premier étage, ne vous fiez pas aux apparences. Lisez attentivement le code
Vous sélectionnez le code que vous souhaitez afficher, utilisez commande + B sur Mac, ou faites un clic droit, sélectionnez Aller à, puis sélectionnez Déclaration, il passera à l'emplacement dans le manifeste, qui est essentiellement une chaîne.