मैं एक ऐप बना रहा हूं जो सर्वर लॉग लाएगा और इसे एंड-यूजर्स एंड्रॉइड फोन में स्टोर करेगा। मैं इनपुटस्ट्रीम और फाइलऑटपुटस्ट्रीम का उपयोग करके फ़ाइल को पढ़ और लिख रहा हूं जो एम्यूलेटर के डेटा/डेटा/<पैकेज_नाम>/फाइल फ़ोल्डर के तहत एक नई टेक्स्ट फ़ाइल उत्पन्न करता है। हालांकि, यूएसबी के माध्यम से कनेक्ट होने पर यह मेरे भौतिक एंड्रॉइड डिवाइस में नहीं दिख रहा है। तर्क के नीचे प्रयुक्त:

   try{
        Session session = new JSch().getSession(user, host, port);
        session.setPassword(password);
        session.setConfig("StrictHostKeyChecking", "no");
        session.connect();
        ChannelSftp sftpChannel = (ChannelSftp) session.openChannel("sftp");
        sftpChannel.connect();
        InputStream inputStream = sftpChannel.get(remoteFile);

        try (Scanner scanner = new Scanner(new InputStreamReader(inputStream))) {
            while (scanner.hasNextLine()) {
                String line = scanner.nextLine();
                logs.append(line);
            }
            try {
                FileOutputStream fos = null;
                fos = openFileOutput(FILE_NAME, MODE_PRIVATE);
                fos.write(logs.getBytes());
                Toast.makeText(this, "File Saved", Toast.LENGTH_SHORT).show();
            }
            catch(FileNotFoundException e){
                 e.printStackTrace();
        }
        catch (JSchException | SftpException e) {
        e.printStackTrace();
     }

क्या कोई तरीका है, मैं इस फाइल को अपने फोन में बिना रूट किए और कुछ अनुमति या कोई बेहतर विकल्प दिए बिना देख सकता हूं? आपके इनपुट की अत्यधिक सराहना करते हैं दोस्तों।

डिवाइस फ़ाइल एक्सप्लोरर स्नैपशॉट

0
Avneet Singh 4 फरवरी 2021, 21:26

1 उत्तर

सबसे बढ़िया उत्तर

AndroidManifest.xml में स्टोरेज एक्सेस करने की अनुमति दें और data/data//files पर अपने डिवाइस स्टोरेज में डेटा लिखने के लिए नीचे तर्क जोड़ें:

    String dirPath = FILE_PATH;
    File dir = new File(dirPath);
    if (!dir.exists()) {
        dir.mkdirs();
    }
    AssetManager assetManager = getAssets();
    InputStream in = null;
    OutputStream out = null;
    try {
        in = assetManager.open(filename);
        File outFile = new File(getExternalFilesDir(FILE_PATH), filename);
        out = new FileOutputStream(outFile);
        copyFile(in, out);
        Toast.makeText(this, "File Written to your Storage!", Toast.LENGTH_SHORT).show();
    } catch (IOException e) {
        e.printStackTrace();
        Toast.makeText(this, "Failed!", Toast.LENGTH_SHORT).show();
    } finally {
        if (in != null) {
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        if (out != null) {
            try {
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
0
Avneet Singh 9 मार्च 2021, 02:09