1
我想讓用戶選擇的圖片通過POST請求轉到我的Web服務器。所以,我需要編碼我爲Base64知情同意,但我有一個問題,那就是logcat的返回,我不明白一個FileNotFoundException異常:java.io.FileNotFoundException即使imageView可以顯示圖片
Unable to decode stream: java.io.FileNotFoundException
這裏是我的onActivityResult:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && null != data) {
final Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Log.d("Toast", filePathColumn[1]);
Cursor cursor = getContentResolver().query(selectedImage, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
imgViewScan.setImageURI(selectedImage);
try
{
InputStream stream = getContentResolver().openInputStream(
data.getData());
Bitmap bm = BitmapFactory.decodeStream(stream);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
//Bitmap bm = BitmapFactory.decodeFile(selectedImage.toString(),options);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.JPEG, 100, baos); //bm is the bitmap object
byte[] b = baos.toByteArray();
String encodedImage = Base64.encodeToString(b, Base64.DEFAULT);
new EnvoiPhotoTask().execute(encodedImage);
} catch(IOException e)
{
Log.e("ScanAc", e.toString());
}
}
}
,這裏是我的清單:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.partenaires.legimetrie.legimetrieapp">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/Theme.AppCompat.Light.NoActionBar">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".InscriptionActivity" />
<activity android:name=".ConnexionActivity" />
<activity android:name=".ServicesActivity" />
<activity android:name=".InterventionRapideActivity" />
<activity android:name=".InterventionDetailleeActivity" />
<activity android:name=".ScanActivity" />
<activity android:name=".ContactActivity"></activity>
</application>
而且我有一個函數`
public static void verifyStoragePermissions(Activity activity) {
// Check if we have write permission
int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permission != PackageManager.PERMISSION_GRANTED) {
// We don't have permission so prompt the user
ActivityCompat.requestPermissions(
activity,
PERMISSIONS_STORAGE,
REQUEST_EXTERNAL_STORAGE
);
}
}
我是因爲3天前絕望......
'光標遊標'和'String picturePath'。你沒有使用picturePath。這很好。所以請刪除所有的代碼。 – greenapps
謝謝,但它不回答我的問題:p – Orionss
當然不是。你不必說出來。你應該發佈乾淨的代碼開始。 – greenapps