[英]Is there a way to get information about each permission in android
Android为开发人员提供了在应用程序可以使用工具或硬件之前声明权限的方法,我创建了一个类来存储每个权限的描述,如权限名称,好看的名称,该权限的描述。 现在无论如何我都可以通过编程方式初始化每个对象,并从http://developer.android.com/reference/android/Manifest.permission.html获取信息。
该类的代码是
package org.owasp.seraphimdroid.customclasses;
public class PermissionData {
private String permission;
private String permissionName;
private String description;
private String regularUseDescription;
private String maliciousUseDescription;
private int weight;
public PermissionData(String permission){
this.permission = permission;
setData();
}
private void setData(){
weight = 0;
}
//Getters and setter
public String getPermissionName() {
return permissionName;
}
public void setPermissionName(String permissionName) {
this.permissionName = permissionName;
}
public int getWeight() {
return weight;
}
public void setWeight(int weight) {
this.weight = weight;
}
public String getPermission() {
return permission;
}
public void setPermission(String permission) {
this.permission = permission;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getRegularUseDescription() {
return regularUseDescription;
}
public void setRegularUseDescription(String regularUseDescription) {
this.regularUseDescription = regularUseDescription;
}
public String getMaliciousUseDescription() {
return maliciousUseDescription;
}
public void setMaliciousUseDescription(String maliciousUseDescription) {
this.maliciousUseDescription = maliciousUseDescription;
}
}
我还应该将这些对象存储为哈希图还是存储在数据库中? 这些将主要用于根据许可在活动中显示信息。
使用Context.check*
方法(来自Context
对象的以“ check”开头的方法)检查是否授予给定的权限。 在这里查看示例。
请注意,不能在运行时添加权限。
我现在想到的最简单的存储对象数据的方法是将它们写入数据库,将它们序列化为文件或将键值对写入SharedPreferences。 这将取决于您认为更合适的内容。 哈希图与持久性无关; 您可以选择它作为将数据保存在内存中并在应用执行期间访问数据的方法。
针对Android开发人员的培训中有一节专门介绍键值对和数据库持久性 。 如果您希望使用序列化,则以下方法可能会有用:
private void _serializeObject(Object object, String fileName) {
String aboluteFilePath = getApplicationContext().getFilesDir().getPath() + File.separator + fileName;
try {
FileOutputStream fileOut = new FileOutputStream(absoluteFilePath);
ObjectOutputStream out = new ObjectOutputStream(fileOut);
out.writeObject(object);
out.close();
fileOut.close();
} catch (IOException e) {
Log.e(TAG, "Error while serializing data to " + absoluteFilePath, e);
}
}
private Object _deserializeObject(String fileName) {
Object object = null;
String absoluteFilePath = getApplicationContext().getFilesDir().getPath() + File.separator + fileName;
try {
FileInputStream fileIn = new FileInputStream(absoluteFilePath);
ObjectInputStream in = new ObjectInputStream(fileIn);
object = in.readObject();
in.close();
fileIn.close();
} catch (FileNotFoundException e) {
// You may want to ignore this exception as it will occur the first time the
// data is deserialized unless you make sure serialization occurs before it.
} catch (IOException e) {
Log.e(TAG, IOException.class.getSimpleName() + " while deserializing from " + absoluteFilePath, e);
} catch (ClassNotFoundException e) {
Log.e(TAG, ClassNotFoundException.class.getSimpleName() + " while deserializing from " + absoluteFilePath, e);
}
return object;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.