26.权限的请求
1.下载素材。
关注公众号,免费获取源码,如有提供源码会有说明。
2.修改AndroidManifest。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="jsz.nopi.firstapp">
<!-- 如果该权限不需要动态请求,则直接在这里设置即可 -->
<!-- 如果该权限需要动态请求,则在这里设置后,还要在对应位置做动态请求 -->
<uses-permission android:name="android.permission.CALL_PHONE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
3.修改MainActivity。
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = findViewById(R.id.getPem);
button.setOnClickListener(this);
}
@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 {
Toast.makeText(this, "已有权限", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode) {
case 1:
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "授权成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "你已拒绝了权限请求", Toast.LENGTH_SHORT).show();
}
break;
}
}
}
4.效果图。
#####附需要动态请求的权限图