如何打开相机,或从 recyclerview 项目中的按钮调用 startActivityForResult
How to open camera , or call startActivityForResult from a button in recycleriew item
我试图在单击按钮照片时打开 相机,但此按钮位于 recyclerview
的 adapter
中,我无法调用 startActivityForResult
,有什么办法吗?或其他启动 相机 并以相同方式拍照的方法,请向我解释如何处理以及为什么我不能调用 startActivityForResult
,我看到了以前的答案和我没听懂,这是我的代码,
谢谢。
class DommageViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView dommage,componant,side;
Button act_photo;
public DommageViewHolder(View itemView) {
super(itemView);
dommage=(TextView)itemView.findViewById(R.id.dommage_value);
componant=(TextView)itemView.findViewById(R.id.componant_value);
side=(TextView)itemView.findViewById(R.id.side_value);
act_photo = (Button)itemView.findViewById(R.id.btn_photo_dommage);
act_photo.setOnClickListener(this);
}
public void bind(DommageGlobale myObject) {
dommage.setText(myObject.getDammage());
componant.setText(myObject.getComponant());
side.setText(myObject.getSide());
}
public interface OnCameraButtoClick{
void onClick();
}
@Override
public void onClick(View view) {
if(view.getId() == act_photo.getId()){
}
}
}
像下面的代码一样使用;
holder.upload_doc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
taskDiscussionId= mDataset.get(position).getTaskdiscussId();
uploadImage();
}
});
和uploadImage()
这样定义;
private void uploadImage() {
Intent intent = new Intent();
intent.setType("*/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Choose File to Upload.."),PICK_FILE_REQUEST);
}
现在您可以定义 startActivityForResult
...
试试这个代码:
在您的 if(view.getId() == act_photo.getId()){ HERE }
中调用以下方法
public void OpenCamera(){
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
view.getContext().startActivity(intent);
}
不要忘记为您的 AndroidManifest.xml 文件添加权限:
<uses-permission android:name="android.permission.CAMERA"/>
此外,对于 Marshmallow 之后的版本,您需要处理运行时权限。
我希望这会有所帮助。
我试图在单击按钮照片时打开 相机,但此按钮位于 recyclerview
的 adapter
中,我无法调用 startActivityForResult
,有什么办法吗?或其他启动 相机 并以相同方式拍照的方法,请向我解释如何处理以及为什么我不能调用 startActivityForResult
,我看到了以前的答案和我没听懂,这是我的代码,
谢谢。
class DommageViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
TextView dommage,componant,side;
Button act_photo;
public DommageViewHolder(View itemView) {
super(itemView);
dommage=(TextView)itemView.findViewById(R.id.dommage_value);
componant=(TextView)itemView.findViewById(R.id.componant_value);
side=(TextView)itemView.findViewById(R.id.side_value);
act_photo = (Button)itemView.findViewById(R.id.btn_photo_dommage);
act_photo.setOnClickListener(this);
}
public void bind(DommageGlobale myObject) {
dommage.setText(myObject.getDammage());
componant.setText(myObject.getComponant());
side.setText(myObject.getSide());
}
public interface OnCameraButtoClick{
void onClick();
}
@Override
public void onClick(View view) {
if(view.getId() == act_photo.getId()){
}
}
}
像下面的代码一样使用;
holder.upload_doc.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
taskDiscussionId= mDataset.get(position).getTaskdiscussId();
uploadImage();
}
});
和uploadImage()
这样定义;
private void uploadImage() {
Intent intent = new Intent();
intent.setType("*/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Choose File to Upload.."),PICK_FILE_REQUEST);
}
现在您可以定义 startActivityForResult
...
试试这个代码:
在您的 if(view.getId() == act_photo.getId()){ HERE }
public void OpenCamera(){
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
view.getContext().startActivity(intent);
}
不要忘记为您的 AndroidManifest.xml 文件添加权限:
<uses-permission android:name="android.permission.CAMERA"/>
此外,对于 Marshmallow 之后的版本,您需要处理运行时权限。 我希望这会有所帮助。