0

私がここに投稿している主な理由は、現在、エミュレーターを実行できるコンピューターがなくて立ち往生しているためです。APK を携帯電話に送信してテストする必要がありました。電話がコンピューターに接続されていたり、サードパーティのエミュレーターが実行されていたりしても、動作しません。このため...エラーログはありません。

このアプリは単純なパスワード マネージャーであり、これまでのところ他のすべての機能が機能します。エクスポート機能を追加しようとしていましたが、実際には何も書き込めません。他の質問やさまざまな情報源をオンラインで確認しましたが、何が原因なのかわかりません。メソッドが呼び出されると、私が知る限り、何もしません。何かが欠けている場合、または同じ問題に関する別の質問が実際にあった場合は、お詫び申し上げます。足りないものは見つかりませんでした。

これが私が使用している方法です。

編集:ここで提案された実行時のアクセス許可を要求するより良い方法を反映するようにコードが更新されました。これが最終的にアプリケーションを修正したものです。

   //Method017: Exports the account info to a .txt file.
    public void exportData() throws IOException {

        //Opens dialog to request permission.
        ActivityCompat.requestPermissions(Main.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
    }

    //Method to handle result of permission request.
    @Override
    public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
        switch (requestCode) {
            case 1: {

                // If request is cancelled, the result arrays are empty.
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                    //Attempt to write a file to the Download folder.
                    String content = "hello world";
                    File file;
                    FileOutputStream outputStream;
                    try {
                        file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), "MyCache");

                        outputStream = new FileOutputStream(file);
                        outputStream.write(content.getBytes());
                        outputStream.close();

                        //According to an online source, this is necessary to make the file viewable on the device.
                        Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
                        intent.setData(Uri.fromFile(file));
                        sendBroadcast(intent);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

                } else {

                    // permission denied, boo! Disable the
                    // functionality that depends on this permission.
                    Toast.makeText(Main.this, "Permission denied to read your External storage", Toast.LENGTH_SHORT).show();
                }
                return;
            }

            // other 'case' lines to check for other
            // permissions this app might request
        }
    }

そして私のマニフェスト:

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.brand.psync">

    <application

        android:allowBackup="true"
        android:icon="@drawable/psynclogo"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        android:screenOrientation="portrait">
        <activity android:name=".Main">
            <intent-filter>
                <action
                    android:name="android.intent.action.MAIN"
                    android:screenOrientation="portrait"    />
                <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
                <category
                    android:name="android.intent.category.LAUNCHER"
                    android:screenOrientation="portrait" />
            </intent-filter>
        </activity>
    </application>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
</manifest>

エラー ログがなくて申し訳ありませんが、それがあれば、ここに投稿する必要はないでしょう。

4

1 に答える 1