先上圖:
對(duì)于一些危險(xiǎn)權(quán)限在AndroidManifest清單文件中申請(qǐng)之后,還需要得到用戶的許可并打開,才算是真正的開啟了這個(gè)權(quán)限。所以可以使用動(dòng)態(tài)申請(qǐng)權(quán)限,對(duì)于某個(gè)功能,如果需要開啟某個(gè)權(quán)限,在用戶使用它之前,彈窗提示用戶是否要開啟這個(gè)權(quán)限。
動(dòng)態(tài)申請(qǐng)權(quán)限大致可以分為四步:
下面以申請(qǐng)寫入外存權(quán)限為例。
-
在AndroidManifest清單文件中聲明要開啟的權(quán)限。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
-
檢查權(quán)限是否開啟,如果開啟了則不需要再執(zhí)行下面的步驟,直接使用功能即可。如果沒有開啟,那么就申請(qǐng)開啟權(quán)限。
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE); }
-
接受申請(qǐng)開啟權(quán)限的結(jié)果。文章來源:http://www.zghlxwxcb.cn/news/detail-513839.html
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (requestCode == REQUEST_CODE) { if (grantResults.length != 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { Toast.makeText(this, "權(quán)限開啟成功", Toast.LENGTH_LONG).show(); } else { Toast.makeText(this, "權(quán)限開啟失敗", Toast.LENGTH_LONG).show(); } } }
完整Java代碼:文章來源地址http://www.zghlxwxcb.cn/news/detail-513839.html
public class MainActivity extends AppCompatActivity {
final int REQUEST_CODE = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQUEST_CODE);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == REQUEST_CODE) {
if (grantResults.length != 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(this, "權(quán)限開啟成功", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(this, "權(quán)限開啟失敗", Toast.LENGTH_LONG).show();
}
}
}
}
到了這里,關(guān)于Android權(quán)限申請(qǐng)之動(dòng)態(tài)申請(qǐng)權(quán)限的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!