【问题标题】:Is there a way to get information about each permission in android有没有办法获取有关android中每个权限的信息
【发布时间】:2014-02-15 11:56:36
【问题描述】:

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;
    }



}

我还应该将这些对象存储为 hashmap 还是数据库中? 这些将主要用于根据权限显示活动中的信息。

【问题讨论】:

    标签: android permissions


    【解决方案1】:

    使用Context.check* 方法(Context 对象中以“check”开头的方法)检查​​是否授予了给定权限。查看示例here

    请注意,权限不能在运行时添加。

    目前我能想到的存储对象数据的最简单方法是将它们写入数据库、将它们序列化到文件中,或者将键值对写入 SharedPreferences。这将取决于你认为什么更合适。哈希图与持久性无关;您可以选择它作为将数据保存在内存中并在应用执行期间访问它的方法。

    Android 开发人员培训有一个关于writing key-value pairs and database persistence 的部分。如果你想使用序列化,下面的方法可能有用:

    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;
    }
    

    【讨论】:

      猜你喜欢
      • 2021-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多