Не получить такой файл или каталог - PullRequest
0 голосов
/ 10 марта 2020

Мне нужно открыть, прочитать и получить путь к файлу .pfx. Файл находится в папке android студийного проекта MyApp / certificate / mycertificate.pfx.

public void openFile(){
    CkCert cert = new CkCert();
    File file = new File("/certificate/mycertificate.pfx");
    String pfxFilename = file.getAbsolutePath();
    String pfxPassword = "1234";
    cert.LoadPfxFile(pfxFilename,pfxPassword)};

Я получаю следующую ошибку: Нет такого файла или каталога . Любое предложение?

Решено: я переместил файл в \ app \ src \ main \ assets

public void open(Context context){
InputStream cert= context.getAssets().open("mycert.pfx");
    char[] password = null;
    KeyStore keystore = null;
    Enumeration<String> aliases;
    String alias = "";
    //open the file
    senha = "1234".toCharArray();
    keystore = KeyStore.getInstance("PKCS12");
    keystore.load(cert, password);
    //Get the alias
    KeyStore.PrivateKeyEntry pkEntry = null;
    PrivateKey pk = null;
    try {
        aliases = keystore.aliases();
        while(aliases.hasMoreElements()) {
            alias = aliases.nextElement();
            System.out.println(alias);
            if (keystore.isKeyEntry(alias)) {
                pkEntry = (KeyStore.PrivateKeyEntry) keystore.getEntry(alias, new KeyStore.PasswordProtection(password));
                pk = pkEntry.getPrivateKey();
            }
        }
    } catch (KeyStoreException e) {
        throw new RuntimeException("CATCH", e);
    }

}

1 Ответ

0 голосов
/ 10 марта 2020

Он находится только в папке root моего android студийного проекта

Этот файл находится на вашей машине для разработки, а не на любом устройстве. Вместо этого упакуйте его как актив (src/main/assets/ вашего модуля) и используйте AssetManager до open() и InputStream для этого актива.

...