簡體   English   中英

滑行不加載圖像從SD卡

[英]glide not loading image from sdcard

我想在sdcard中放一個圖像,但它沒有顯示,我認為滑行庫或權限存在問題,我在其中堆放了2天,請幫助我。

public class MainActivity extends AppCompatActivity {

    public final static String PATH_SD_CARD = "/Images/Mj.jpg";
    private static final int MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE = 1;



    @TargetApi(Build.VERSION_CODES.M)
    @RequiresApi(api = Build.VERSION_CODES.M)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE)
                != getPackageManager().PERMISSION_GRANTED) {

            // Should we show an explanation?
            if (shouldShowRequestPermissionRationale(
                    Manifest.permission.READ_EXTERNAL_STORAGE)) {
                // Explain to the user why we need to read the contacts
            }

            requestPermissions(new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
                    MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE);

            // MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE is an
            // app-defined int constant that should be quite unique

            return;
        }

        ImageView img = findViewById(R.id.imageView);

        Glide.with(this)
                .load(Environment.getExternalStorageDirectory().getAbsolutePath()+PATH_SD_CARD)
                .into(img);
    }
}

您是否在Android清單文件中添加了權限,如以下代碼所示。

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

調用Environment.getExternalStorageDirectory()並不能保證extеrnal存儲在SD卡的方式,但字是外部參照“外部應用程序”。 在大多數情況下,該路徑將為您提供: /storage/emulated/0/

由於指向不是設備組成部分的任何“驅動器”的路徑可以具有不同的名稱,因此,無論設備如何,都需要使用其他方法來查找它。 IMO,最有效和安全的方法是使用某些條件查詢MediaStore

快速解決方案可能是使用getExternalFilesDirs()巫婆為您提供Files[] ,其中您的應用程序包含“其”目錄。 該陣列的第二個元素是SDCard上的路徑。 如果從那里向上兩個“級別”( .getParentFile() ), .getParentFile()獲得對“根” SDCard目錄的引用。

當然,正如已經提到的,請確實廣泛使用調試來弄清哪里出錯了。

測試此代碼:

String fileName = "myImage.jpg";
        String imagePath = Environment.getExternalStorageDirectory() + "/" + fileName;

        File file = new File(imagePath);
        Uri imageUri = Uri.fromFile(file);

        Glide.with(this)
                .load(imageUri)
                        .into(imgView);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM