Bitmojiアプリでbitmojiを選択すると、Androidのインテントを使用してアプリを表示しています。それは私のアプリを起動し、ImageViewにbitmojiを表示する必要があります。androidのインテントからImageViewに表示するbitmoji画像を取得できません
私のアプリは正常に起動しますが、imageViewは空白です。
私は次のエラーを取得する:ここで
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)
は私MainActivityコードは次のとおりです。
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);
}
を読み取り許可を追加する必要がありますリソース(私の描画可能なフォルダから)からimageViewへのイメージ。特に、別のアプリ(bitmoji)から画像を取得しようとしているときに、imageViewが更新されていないときです。 – Alex