到目前为止,我一直在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文件中添加权限,或者只是动态处理它,或者我是否必须同时处理它们。
-Thanks
答案 0 :(得分:6)
你需要做两件事。你必须在menifest中添加它并管理它。
答案 1 :(得分:3)
您可以放松生活并使用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"/>
中实施的完整示例
答案 2 :(得分:1)
答案 3 :(得分:0)
从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();
}
}
}