1. 程式人生 > >安卓從googlephoto上選擇雲端圖片導致程式崩潰的解決方案

安卓從googlephoto上選擇雲端圖片導致程式崩潰的解決方案

當軟體選擇照片時,如果選擇的是使用googlephoto或google雲備份過,並在本地刪除過的圖片時,程式就會崩潰或圖片是空白 ,報錯原因:

IllegalArgumentException:InvalidURI:content://com.google.android.apps.photos.contentprovider/0/1‌​/mediaKey%3A...6mkQk‌​-P4tzU/ACTUAL/11...8‌​0 

原因是使用googlephoto備份過並在本地刪除的圖片會在手機中儲存一個縮圖,其他軟體呼叫googlephoto選擇圖片時依然能看到刪除過的圖片,但是此時圖片的url已經不是本地的url了,而是一個圖片的下載連結,這時使用getPath(url)會得到一個null路徑。
國內的好多軟體都存在這個問題,其實解決辦法也很簡單,就是通過在onactivityresult中把data.getData()得到的資料存到一個臨時檔案中做一個拷貝,再讀取就可以了。
選擇圖片時要使用Intent.ACTION_GET_CONTENT

Intent selectPhoto = new Intent(Intent.ACTION_GET_CONTENT,MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
selectPhoto.setType("image/*");
startActivityForResult(selectPhoto,ONACTIVITYRESULT_SELECT_PHOTO);

//onActivityResult

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super
.onActivityResult(requestCode, resultCode, data); if (resultCode != RESULT_OK) { PictureManager.this.finish(); return; } else { switch (requestCode) { case BabyCareStaticConstant.ONACTIVITYRESULT_SELECT_PHOTO:// select // 建立空檔案用於儲存圖片資料
File tempFile = new File(this.getFilesDir().getAbsolutePath(), "temp_image"); //拷貝uri內容到空檔案中 try { tempFile.createNewFile(); copyAndClose(this.getContentResolver().openInputStream(data.getData()),new FileOutputStream(tempFile)); } catch (IOException e) { //Log Error } //Now fetch the new URI Uri pickedUri = Uri.fromFile(tempFile); String imgPath = pickedUri.toString(); if (imgPath.indexOf("file://") > -1) { // 如果是從檔案管理器讀取的絕對路徑,直接刪掉開頭的"file://"即可 imgPath = imgPath.replace("file://", ""); } else if (imgPath.indexOf("content://") > -1) { // 如果是從相簿中讀取的相對路徑,則需要轉換成絕對路徑 imgPath = BitmapHelper.getRealPathFromURI( PictureManager.this, pickedUri); } returnToFirstActivity(imgPath, new PictureHelper().imageName); break; } } }

相關推薦

googlephoto選擇雲端圖片導致程式崩潰解決方案

當軟體選擇照片時,如果選擇的是使用googlephoto或google雲備份過,並在本地刪除過的圖片時,程式就會崩潰或圖片是空白 ,報錯原因: IllegalArgumentException:InvalidURI:content://com.google

專案實戰之優雅的退出APP的終極解決方案

前言 現在幾乎所有的app都有退出程式的功能(最常見的就是在專案主Activity中連續點選兩次返回按鈕退出app)至於具體如何實現退出功能,網上有羅列出以下4種方式: 容器式 SingleTask式 廣播式 程序式 個人比較推薦使用弱引用的容器式

瀑布流錯亂 滑動閃爍 頂部留白 的解決方案

基本上網上給出的解決問題方案為: layoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE)   recyclerView.addOnScrollListener(ne

開發-手機顯示tomcat中的圖片

《1》.準備步驟: 1.在tomcat中的webapps中的ROOT專案下新增img資料夾,內有:picinfo.txt和圖片,每張圖片的url都在picinfo.txt中,如圖: 《2》思路: (2.1)定義成員變數: 2.1.1:圖片控制元件

端同時傳文字和圖片到伺服器,伺服器接收並處理

(更簡單的方法,點選安卓端同時上傳圖片和文字,伺服器接收並處理(二)) 之前看了很多部落格,找到的無非就是要麼只上傳json,要麼只上傳圖片。碰了許多的壁,因此我這裡寫一下自己已經測試成功的程式碼。 Android端使用Post上傳圖片和json程式碼 注

關於如何在同一臺電腦的兩個模擬器之間的socket通訊(圖片傳輸)

最近課程學習中,遇到了這個問題。 網上搜了一大堆,基本都是抄來抄去的。 即使自己寫的,說的也不是很完全。自己第一次用安卓開發,也走了很多彎路。所以寫下這篇部落格,希望初學者可以少走彎路。本文講的都是很基礎的東西。保證初學者按照步驟來,可以run成功。 開發環境使用的Ecli

手機快速找回QQ聊天圖片

安卓手機快速找回QQ聊天圖片 畢竟現在我們和朋友親友之間的溝通交流都是依靠手機上的某種APP,在眾多的APP中,我們現在用的最多的是,微信和 QQ,而QQ是註冊人數最多的,也是我們在生活中最常見的交流溝通工具。總是聽到很多的小夥伴在抱怨自己又把QQ聊天的文件給刪除了,“又刪除了”,說明了我們

ProgressBar的indeterminateDrawable屬性在6.0的問題

tag sha ont progress utf-8 ++ Coding nat 圓形 通過indeterminateDrawable屬性去自己定義ProgressBar方法: <ProgressBar android:i

手機刷手機kali系統Nethunter

ron adb kali loader 工具 dde file png con kali Nethunter是一個裝在手機上的kali,集成了kali的工具包,hid,無線攻擊等等。 本文主要敘述如何安裝此系統並正確的配置。不讓你走彎路。 首先我們拒絕傻瓜安裝軟件 kali

UE4 打包紋理格式選擇

原文:https://docs.unrealengine.com/en-us/Platforms/Android/Reference 此處擷取翻譯: Android紋理格式 並非所有Android裝置都是相同的。特別是,有4種不同的渲染硬體。它們各自支援不同格式的壓

入門到進階推薦學習方法與書籍整理(pdf)

前言:技術書閱讀方法論   一.速讀一遍(最好在1~2天內完成)   人的大腦記憶力有限,在一天內快速看完一本書會在大腦裡留下深刻印象,對於之後複習以及總結都會有特別好的作用。   對於每一章的知識,先閱讀標題,弄懂大概講的是什麼主題,再去快速看

手機相簿出現莫名的圖片?還刪除不徹底?一招徹底清除!

不知道大家有沒有這樣的問題,就是開啟安卓的手機的相簿,有時候會出現很多莫名其妙的圖片,有時候怎麼刪除也刪除乾淨!今天小編就為大家介紹如何快速刪除的方法! 方法一:關閉手機鎖屏更新。 進入手機【設定】——【顯示】——【桌布】——【隨機切換桌布】,關閉這個功能。  

圖片或檔案傳到伺服器或伺服器讀取(圖片可根據路徑src回顯展示,伺服器讀出來)

不需要配置虛擬路徑,存的時候資料庫裡只存了圖片的名稱(隨機重新命名的形式),存在指定伺服器上,取的時候也是根據圖片名稱從伺服器上找到,並用OutputStream 讀出來 前臺頁面(用的bootstrap): html程式碼(可回顯,回顯的時候也是去後臺根據路徑查詢到圖片):

heic檔案怎麼開啟 heic是什麼圖片

對於很多安卓使用者來說,說起heic腦子裡也許是一片空白,但是對於每個新蘋果使用者來說還都是需要慢慢了解的,heic是一種圖片儲存格式,也是蘋果iOS11及以上系統所特有的,所以在安卓手機和電腦中都是無法直接檢視的,因此在平時釋出朋友圈等方便會帶來一些麻煩,要想在安卓中開啟這樣格式,需要將其格式進行

日期與時間選擇

碼小渣們,不學習是不行了。讓我們不斷挑戰程式碼,讓自己從渣變成塊。 有好多天沒寫部落格了,今天來和一些碼小渣小夥伴分享兩個控制元件  “DatePicker”  ,  "TimePicker" 不拿起我久違的書本我可能都忘了這兩個控制元件,對於很多小夥伴來說這些都是手到擒來的。但是像我這種學了就忘的人只能這樣

如何用電腦除錯手機瀏覽器的網頁

下面的方法,只適用於安卓手機和windows,並且都需要谷歌瀏覽器。手機(安卓機)需要安裝chrome與電腦上的chrome配合1.手機的準備工作開啟手機的開發者模式(設定->關於手機->版本號);再開啟USB除錯(設定->開發者選項->USB除錯),

自定義日曆選擇

哈哈,又要更新部落格了+_+! 這一次發一個日曆選擇器吧! 說實話,看到需求那一刻,我絕對是崩潰的,不過還好有github這個大佬罩著我,所以為了避免重複造輪子,我就去上面找了一下日曆選擇器,一搜一大把,剛開始挺高興的,結果後來越看臉越黑,沒一個符合我的需求

關於unity打包的apk在8.0執行黑屏的解決方案

當前專案unity打了安卓端的測試包,在安卓5.0,6.0,7.0執行的時候都是正常的。唯獨在安卓8.0執行黑屏,一開始的時候單純的以為是安卓sdk版本的問題,後來分別查看了unity的安卓sdk跟引入的安卓部分的sdk版本如下圖,發現安卓8.0對應的api26都是轉裝好的。

原來操控介面可以這麼簡單----上下滑動縮放頂部圖片,左右滑動結束當前Activity,及View柔和回彈效果

先上效果圖: 上傳圖片不能超過2M,費了好大勁。每一張gif動的有點快,將就看。 首先說原理: 為activity的xml檔案根佈局新增setOnTouchListener。上下滑動和左右滑動的所有操作都是在OnTouchListener的onTouch方法中實現的,通過

popwindow 在7.0顯示位置錯誤以及在6.0下點選外部不能消失的情況解析

popwindow在日常使用的過程中頻率很高 ,一般用起來也是得心應手,但是也是有很多坑存在的,在這個版本的迭代中就遇到了一些問題,解決起來很簡單,但是以後開發中肯定要注意的 popwindow 出現的View not attached to window