2016-06-23 8 views
1

Ich verwende eine Absicht in Android, um meine App aufzulisten, wenn ich ein Bitmoji in der Bitmoji App auswähle. Es sollte dann meine App starten und das Bitmoji in einem ImageView anzeigen.Bitmoji-Bild kann nicht angezeigt werden in ImageView von Absicht in Android

Es startet meine App gut, aber die ImageView ist leer.

bekomme ich folgende Fehlermeldung:

E/BitmapFactory: Unable to decode stream: java.io.FileNotFoundException: /storage/emulated/0/Android/data/com.bitstrips.imoji/cache/bitmoji-1441479250.png: open failed: EACCES (Permission denied)

Hier mein MainActivity Code:

public class MainActivity extends AppCompatActivity 
    implements NavigationView.OnNavigationItemSelectedListener { 

private Bitmap bitmap; 
private ImageView mImageView; 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

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

    if (Intent.ACTION_SEND.equals(action) && type != null) { 
     if ("text/plain".equals(type)) { 
      handleSendText(intent); // Handle text being sent 
     } else if (type.startsWith("image/")) { 
      handleSendImage(intent); // Handle single image being sent 
     } 
    } 

} 

void handleSendImage(Intent intent) { 
    Uri imageUri = intent.getParcelableExtra(Intent.EXTRA_STREAM); 
    Context context = getApplicationContext(); 

    String selectedImagePath; 
    selectedImagePath = getPath(imageUri); 
    Toast.makeText(context, selectedImagePath, Toast.LENGTH_LONG).show(); 
    if(imageUri!=null) { 
     new imageWorkerTask().execute(selectedImagePath); 
    } 
} 

public String getPath(Uri uri) 
{ 
    /* 
    Cursor cursor = getContentResolver().query(uri, null, null, null, null); 
    cursor.moveToFirst(); 
    int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA); 
    return cursor.getString(idx); 
    */ 
    return uri.getPath(); 
} 

class imageWorkerTask extends AsyncTask<String, Void, Bitmap> { 
    BitmapFactory.Options options = new BitmapFactory.Options(); 
    Resources resources = getResources(); 

    int imageHeight = options.outHeight; 
    int imageWidth = options.outWidth; 
    String imageType = options.outMimeType; 


    @Override 
    protected Bitmap doInBackground(String... paths) { 
     return decodeBitmapFromFile(paths[0]); 
    } 

    @Override 
    protected void onPostExecute(Bitmap result) { 

     mImageView.setImageBitmap(result); 
    } 
} 

public static Bitmap decodeBitmapFromFile(String path) { 

    // First decode with inJustDecodeBounds=true to check dimensions 
    final BitmapFactory.Options options = new BitmapFactory.Options(); 
    options.inJustDecodeBounds = true; 

    // Calculate inSampleSize 
    //options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight); 
} 
    // Decode bitmap with inSampleSize set 
    options.inJustDecodeBounds = false; 

    return BitmapFactory.decodeFile(path, options); 
} 
+0

ich in der Lage bin zu laden ein Bild von einer Ressource (von meinem zeichnenden Ordner) in die imageView. Es ist speziell, wenn ich versuche, das Bild von einer anderen App (Bitmoji) zu bekommen, die das ImageView nicht aktualisiert. – Alex

Antwort

0

Sie Leseberechtigung hinzufügen sollten in AndroidManifest.xml

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

Ich habe das in meiner AndroidManifest.xml, da muss ein anderes Problem sein ... – Alex