Android:将原始资源作为文件或码头资源访问。

时间:2016-04-20 15:23:26

标签: java android ssl resources jetty

我在android项目中添加SSL密钥库并通过SSH连接,我想将密钥库文件作为Jetty资源或文件(我可以转换为资源)访问。不幸的是,我是Android的新手,并且不知道如何以这种方式访问​​原始资源。你能帮忙的话,我会很高兴。谢谢。

代码:

    import org.eclipse.jetty.util.resource.Resource;

    performConnection(){
// The file is present in raw directory. 
Resource keystore = Resource.newClassPathResource("raw/domain.keystore");
    }

另外,正如您在屏幕截图中所看到的,Resource类有多个参数。任何人都适合,只要我可以访问密钥库,因为该任务只证明是税收。

屏幕截图:

enter image description here

任何帮助都会很好。谢谢。

3 个答案:

答案 0 :(得分:1)

  

我是Android新手,不知道如何以这种方式访问​​原始资源

原始资源是开发计算机上的文件。它们不是设备上的文件。

看看您是否可以提供InputStream。如果可以,请使用getResources().openRawResource()在原始资源上获得InputStream

否则,您必须使用InputStream将原始资源复制到本地文件,例如internal storage,这样您就可以使用File

答案 1 :(得分:0)

private Resource loadKeystoreFromAPK(int rId) throws IOException {
        File baseDir = getApplication().getExternalFilesDir(null);
        File path = new File(baseDir, "keystore");
        // Check if it exists, if not, create it
        if (!path.exists()) {
            path.mkdir();
        }
        path = new File(path, "truststore.store");
        if(!path.exists()){
            path.createNewFile();
        }
        FileOutputStream out = new FileOutputStream(path);
        InputStream in = getResources().openRawResource(rId);
        IOUtils.copy(in,out);
        in.close();
        out.close();
        return Resource.newResource(path);
    }

答案 2 :(得分:0)

当我在这里找到方法试图解决在我的 android 应用程序中检索我的密钥库的问题时,我没有得到任何这些建议。当我尝试之前建议的解决方案时,它在原始文件夹中找不到密钥库。

我是这样解决的:

  1. 我在主文件夹 app/src/main/assets 中创建了一个名为 assets 的文件夹,我将密钥库文件放在其中。

  2. 然后我可以使用这些步骤来检索名为 keystore.p12 的密钥库。

    KeyStore keyStore = KeyStore.getInstance("PKCS12");
    AssetManager ass = context.getAssets();
    keyStore.load(ass.open("keystore.p12"), keyStorePassword.toCharArray());

我花了一些时间来解决这个问题,所以我希望这可以帮助其他人。您还需要用 try/catch 块包围它以处理可能的异常。如果您在活动中执行此操作,则可以在没有上下文部分的情况下调用 getAssets()