Android API 23 岁及以上的权限
Android permissions for API 23 and up
到目前为止,我一直在 AndroidManifest.xml 文件中为应用添加必要的权限,如下所示
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.SEND_SMS" />
正如我在网上看到的那样。对于 API 23 岁及以上的用户,应用程序需要在需要时即时请求权限。
所以我的问题是,我是否仍需要在 AndroidManifest.xml 文件中添加权限,或者只是即时处理它,还是我必须同时执行这两项操作。
-谢谢
这两件事你都需要做。您必须将其添加到清单中并进行管理。
从 Android 6.0(API 级别 23)开始,用户在应用 运行 时向应用授予权限,而不是在安装应用时。这种方法简化了应用程序安装过程,因为用户在安装或更新应用程序时不需要授予权限。使用以下代码检查权限
private void checkPermission() {
// give whatever permission you want. for example i am taking--Manifest.permission.READ_PHONE_STATE
if ((Build.VERSION.SDK_INT >= 23) &&(ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.READ_PHONE_STATE)
!= PackageManager.PERMISSION_GRANTED ) ){
requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, 2);
onRequestPermissionsResult(int, String[], int[]) overriden method
}else {
//write your code here. if permission already granted
}
}
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 2) {
Log.i("resultcode",""+requestCode);
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.i("resultcode",""+requestCode);
}
else {
Toast.makeText(getApplicationContext(), "Permission Denied", Toast.LENGTH_SHORT).show();
}
}
}
如果你有时间,有两种权限。
在运行时询问危险。
您可以轻松使用 nativescript-permissions 请求权限运行时(代码更少,无需通过本机实现)
您仍然需要在 Androidmanifest.xml.
中请求这些权限
具有 nativescript-ermissions 的运行时权限示例
var permissions = require("nativescript-permissions");
permissions.requestPermission([
"android.permission.INTERNET",
"android.permission.READ_EXTERNAL_STORAGE",
"android.permission.WRITE_EXTERNAL_STORAGE",
"android.permission.CALL_PHONE",
"android.permission.SEND_SMS"
], "I need these permissions")
.then(function (res) {
console.log("Permissions granted!");
})
.catch(function () {
console.log("No permissions - plan B time!");
});
AndroidManfiest.xml
的例子
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
中实现的完整示例
到目前为止,我一直在 AndroidManifest.xml 文件中为应用添加必要的权限,如下所示
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.SEND_SMS" />
正如我在网上看到的那样。对于 API 23 岁及以上的用户,应用程序需要在需要时即时请求权限。
所以我的问题是,我是否仍需要在 AndroidManifest.xml 文件中添加权限,或者只是即时处理它,还是我必须同时执行这两项操作。
-谢谢
这两件事你都需要做。您必须将其添加到清单中并进行管理。
从 Android 6.0(API 级别 23)开始,用户在应用 运行 时向应用授予权限,而不是在安装应用时。这种方法简化了应用程序安装过程,因为用户在安装或更新应用程序时不需要授予权限。使用以下代码检查权限
private void checkPermission() {
// give whatever permission you want. for example i am taking--Manifest.permission.READ_PHONE_STATE
if ((Build.VERSION.SDK_INT >= 23) &&(ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.READ_PHONE_STATE)
!= PackageManager.PERMISSION_GRANTED ) ){
requestPermissions(new String[]{Manifest.permission.READ_PHONE_STATE}, 2);
onRequestPermissionsResult(int, String[], int[]) overriden method
}else {
//write your code here. if permission already granted
}
}
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 2) {
Log.i("resultcode",""+requestCode);
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.i("resultcode",""+requestCode);
}
else {
Toast.makeText(getApplicationContext(), "Permission Denied", Toast.LENGTH_SHORT).show();
}
}
}
如果你有时间,有两种权限。
在运行时询问危险。
您可以轻松使用 nativescript-permissions 请求权限运行时(代码更少,无需通过本机实现) 您仍然需要在 Androidmanifest.xml.
中请求这些权限具有 nativescript-ermissions 的运行时权限示例
var permissions = require("nativescript-permissions");
permissions.requestPermission([
"android.permission.INTERNET",
"android.permission.READ_EXTERNAL_STORAGE",
"android.permission.WRITE_EXTERNAL_STORAGE",
"android.permission.CALL_PHONE",
"android.permission.SEND_SMS"
], "I need these permissions")
.then(function (res) {
console.log("Permissions granted!");
})
.catch(function () {
console.log("No permissions - plan B time!");
});
AndroidManfiest.xml
的例子<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.SEND_SMS"/>
中实现的完整示例