簡體   English   中英

有沒有辦法獲取有關Android中每個權限的信息

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM