1

画像を含むフォルダーを検索し、その特定のフォルダーの画像を表示する単純なギャラリー アプリを開発しています。最初に使用してEnvironment.getExternalStorageDirectory()から、画像を含むフォルダーを再帰的に検索します。シミュレーターとデバイスは正常に動作しています。クライアントが Nexus 4 にアプリをインストールしたときに、何も読み込まれません。Nexus シリーズには外部 SD スロットがないという投稿をいくつか見ました。私はデバッグ用の Nexus 4 を持っておらず、クライアントも非技術的です。自分でトラブルシューティングを行い、問題の原因を突き止めることができます。この点で誰か助けてもらえますか? Environment.getExternalStorageDirectory()問題は、Nexus には当てはまらない通話にあると思います。この問題にどのように取り組むことができるか考えていますか? これが私が使用している抜粋されたコードです:

    private File createImageFile() throws IOException {
        // Create an image file name
        String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
        String imageFileName = "JPEG_" + timeStamp + "_";
        File cacheDir = null;
        if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)) {
            cacheDir=new File(android.os.Environment.getExternalStorageDirectory().getAbsolutePath(), "MyImages");
        }
        else {
            cacheDir = getCacheDir();
        }
        if(!cacheDir.exists()) {
            cacheDir.mkdir();
        }
//      File storageDir = Environment.getExternalStoragePublicDirectory(
//              Environment.DIRECTORY_PICTURES);
        File image = File.createTempFile(
                imageFileName,  /* prefix */
                ".jpg",         /* suffix */
                cacheDir      /* directory */
                );

        // Save a file: path for use with ACTION_VIEW intents
        mCurrentPhotoPath = "" + image.getAbsolutePath();
        return image;
    }

    public void dispatchTakePictureIntent() {
        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        // Ensure that there's a camera activity to handle the intent
        if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
            // Create the File where the photo should go
            File photoFile = null;
            try {
                photoFile = createImageFile();
            } catch (IOException ex) {
                // Error occurred while creating the File
                ex.printStackTrace();
            }
            // Continue only if the File was successfully created
            if (photoFile != null) {
                takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT,
                        Uri.fromFile(photoFile));
                startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
            }
        }
    }

そして、ここにマニフェストを追加した権限:

<uses-permission
    android:name="android.permission.WRITE_EXTERNAL_STORAGE"
    android:maxSdkVersion="18" />

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

<uses-feature
    android:name="android.hardware.camera"
    android:required="true" />

ありがとう!

4

1 に答える 1

0

MediaStore.Images コンポーネントを試してみるべきだと思います。カーソルを使用して画像を読み込みます。ドキュメントを参照してください: http://developer.android.com/reference/android/provider/MediaStore.html

于 2014-07-17T18:10:20.443 に答える