我尝试与Intent.ACTION_SEND
分享图片,但收到此错误:
无法解析方法getResource()
这是我尝试与以下内容共享图片的代码:
File root = android.os.Environment.getExternalStorageDirectory();
File dir = new File (root.getAbsolutePath() + "/myFolder");
dir.mkdirs(); // build directory
Random generator = new Random();
int n = 10000;
n = generator.nextInt(n);
String fileName = "Image-"+ n +".jpg";
File file = new File(dir, fileName);
if (file.exists ()) file.delete ();
try {
FileOutputStream outStream = new FileOutputStream(file);
InputStream is;
Bitmap bitmap;
is = this.getResources().openRawResource(R.drawable.image1);
bitmap = BitmapFactory.decodeStream(is);
try {
is.close();
is = null;
} catch (IOException e) {
}
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, outStream);
outStream.flush();
outStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Uri outputFileUri = Uri.fromFile(file);
Intent intent = new Intent(Intent.ACTION_SEND);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setType("image/jpeg");
intent.putExtra(Intent.EXTRA_STREAM, outputFileUri);
startActivity(Intent.createChooser(intent, "Share this image via"));
答案 0 :(得分:3)
如果您使用片段:
getActivity().getResources();
或尝试:
getApplicationContext().getResources();
如果您在活动中但在内部班级中编辑此行中的this
字词:
is = this.getResources().openRawResource(R.drawable.image1);
要:
is = Your_Activity_Class_Name.this.getResources().openRawResource(R.drawable.image1);
答案 1 :(得分:1)
首先,该方法称为getResources()
,带有's'。它是基类Context类的方法。因此,您必须从您的活动或服务访问它。如果你的函数属于一个单独的(非上下文)类,你应该保持对上下文的引用(不良实践),或者在函数完成之后使用getResources()
,例如在上下文中的回调中。
答案 2 :(得分:1)
如果它是一个片段,那么这将为我解决问题:
Hello World!
但是,如果它是一项活动,则可以使用:
getActivity.getString(R.string.string_name);
最后,在适配器中,您可以执行以下操作:
this.getString(R.string.string_name);