Android 错误地说;您是否已宣布此活动;当我尝试从firebase检索图像时
我正在制作一个公文包应用程序,用导航抽屉在firebase上存储图像,当我点击我的文本视图(应该打开)时,它会在firebase itcrash上获取图像,并说“无法找到显式活动类{com.example.johan.johansteve/com.example.johan.johansteve.ImageActivity}”;您是否在AndroidManifest.xml中声明了此活动?” 私有Uri-mimageri; //获取图像并使用它上载到数据库Android 错误地说;您是否已宣布此活动;当我尝试从firebase检索图像时,android,image,firebase,declaration,picasso,Android,Image,Firebase,Declaration,Picasso,我正在制作一个公文包应用程序,用导航抽屉在firebase上存储图像,当我点击我的文本视图(应该打开)时,它会在firebase itcrash上获取图像,并说“无法找到显式活动类{com.example.johan.johansteve/com.example.johan.johansteve.ImageActivity}”;您是否在AndroidManifest.xml中声明了此活动?” 私有Uri-mimageri; //获取图像并使用它上载到数据库 private StorageRefe
private StorageReference mStorageRef;
private DatabaseReference mDatabaseRef;
private StorageTask mUploadTask;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_portfolio, container,false);
mButtonChooseImage = v.findViewById(R.id.buttonChooseImage);
mButtonUpload = v.findViewById(R.id.uploadButton);
mTextViewShowUploads = v.findViewById(R.id.Text_View_uploads);
mEditTextFileName = v.findViewById(R.id.edit_text_file_name);
mImageView = v.findViewById(R.id.imageViewAction);
mProgressBar = v.findViewById(R.id.progress_Bar);
mStorageRef = FirebaseStorage.getInstance().getReference("uploads");
mDatabaseRef = FirebaseDatabase.getInstance().getReference("uploads");
//setOnClickListener method used to put actions into our views
mButtonChooseImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openFileChooser();
//method made to choose the type of file
}
});
mButtonUpload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mUploadTask != null && mUploadTask.isInProgress()){
Toast.makeText(getContext(),"upload in progress", Toast.LENGTH_SHORT).show();
}else {
uploadFile();
}
}
});
mTextViewShowUploads.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openImagesActivity();
}
});
return v;
}
private void openFileChooser() {
Intent intent = new Intent();
intent.setType("image/*"); // declaration of the type of file to be selected
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(intent, PICK_IMAGE_REQUEST); //used it for identify the type of dta we are retrieving
}
// method called when the file is selected
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK
&& data != null && data.getData() != null) {
//process of image selecting using comparation
mImageUri = data.getData(); //used to upload in fireBase
Picasso.get().load(mImageUri).into(mImageView);
//mImageView.setImageURI(mImageUri); native way without picasso
}
}
private String getFileExtension(Uri uri){
ContentResolver cR = getContext().getContentResolver();
MimeTypeMap mime = MimeTypeMap.getSingleton();
return mime.getExtensionFromMimeType(cR.getType(uri));
//this method is only used to get extension from our file eg.jpg
}
private void uploadFile(){
if (mImageUri != null){
StorageReference fileReference = mStorageRef.child(System.currentTimeMillis()
+ "." + getFileExtension(mImageUri));
mUploadTask = fileReference.putFile(mImageUri)
.addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
private static final String TAG ="ImagesActivity ";
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
mProgressBar.setProgress(0);
}
},500);
//delays the progress bar to 5 seconds so teh user gets a visual feedback
Toast.makeText(getActivity(), "Upload Successful",Toast.LENGTH_LONG).show();
/**
Upload upload = new Upload(mEditTextFileName.getText().toString().trim(),
taskSnapshot.getStorage().getDownloadUrl().toString());
**/
Task<Uri> urlTask = taskSnapshot.getStorage().getDownloadUrl();
while (!urlTask.isSuccessful());
Uri downloadUrl = urlTask.getResult();
Log.d(TAG, "onSuccess: fireBase download url: " + downloadUrl.toString());
Upload upload = new Upload(mEditTextFileName.getText().toString().trim(),downloadUrl.toString());
String uploadId = mDatabaseRef.push().getKey();
mDatabaseRef.child(uploadId).setValue(upload);
//create a new entry with contents the meter data of our uploads
//recycler view will use these entries to get the data from there
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Toast.makeText(getContext(), e.getMessage(),Toast.LENGTH_SHORT).show();
}
})
.addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
@Override
public void onProgress(UploadTask.TaskSnapshot taskSnapshot) {
double progress = (100.0 * taskSnapshot.getBytesTransferred() / taskSnapshot.getTotalByteCount());
mProgressBar.setProgress((int) progress);
}
});
}else{
Toast.makeText(getContext(),"No File Selected",Toast.LENGTH_SHORT).show();
}
}
private void openImagesActivity(){
Intent intent = new Intent(getActivity(),ImageActivity.class);
startActivity(intent);
}}
private-StorageReference-mStorageRef;
私有数据库引用mDatabaseRef;
专用存储任务mUploadTask;
@可空
@凌驾
创建视图时的公共视图(@NonNull LayoutInflater inflater、@Nullable ViewGroup container、@Nullable Bundle savedInstanceState){
视图v=充气机。充气(R.layout.fragment_公文包,容器,假);
mButtonChooseImage=v.findViewById(R.id.buttonChooseImage);
mButtonUpload=v.findviewbyd(R.id.uploadButton);
mTextViewShowUploads=v.findviewbyd(R.id.Text\u View\u uploads);
mEditTextFileName=v.findviewbyd(R.id.edit\u text\u file\u name);
mImageView=v.findviewbyd(R.id.imageViewAction);
mProgressBar=v.findViewById(R.id.progress\u Bar);
mStorageRef=FirebaseStorage.getInstance().getReference(“上传”);
mDatabaseRef=FirebaseDatabase.getInstance().getReference(“上载”);
//setOnClickListener方法,用于将操作放入视图中
mButtonChooseImage.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
openFileChooser();
//方法来选择文件的类型
}
});
mButtonUpload.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
if(mUploadTask!=null&&mUploadTask.isInProgress()){
Toast.makeText(getContext(),“正在上载”,Toast.LENGTH_SHORT.show();
}否则{
上传文件();
}
}
});
mTextViewShowUploads.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
openImagesActivity();
}
});
返回v;
}
私有void openFileChooser(){
意图=新意图();
intent.setType(“image/*”);//要选择的文件类型的声明
intent.setAction(intent.ACTION\u GET\u CONTENT);
startActivityForResult(intent,PICK_IMAGE_REQUEST);//用于标识我们正在检索的dta的类型
}
//选择文件时调用的方法
@凌驾
ActivityResult上的公共void(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
如果(requestCode==PICK\u IMAGE\u REQUEST&&resultCode==RESULT\u OK
&&数据!=null&&data.getData()!=null){
//基于比较的图像选择过程
mimageri=data.getData();//用于在fireBase中上载
Picasso.get().load(mimageri).into(mImageView);
//setImageURI(mimageri);没有毕加索的原生方式
}
}
私有字符串getFileExtension(Uri){
ContentResolver cR=getContext().getContentResolver();
MimeTypeMap mime=MimeTypeMap.getSingleton();
返回mime.getExtensionFromMimeType(cR.getType(uri));
//此方法仅用于从文件eg.jpg获取扩展名
}
私有void上传文件(){
if(mimageri!=null){
StorageReference fileReference=mStorageRef.child(System.currentTimeMillis()
+“+getFileExtension(mimageri));
mUploadTask=fileReference.putFile(mimageri)
.addOnSuccessListener(新的OnSuccessListener(){
私有静态最终字符串标记=“ImagesActivity”;
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot){
Handler=newhandler();
handler.postDelayed(新的Runnable(){
@凌驾
公开募捐{
mProgressBar.setProgress(0);
}
},500);
//将进度条延迟到5秒,以便用户获得视觉反馈
Toast.makeText(getActivity(),“上载成功”,Toast.LENGTH_LONG.show();
/**
Upload Upload=新上载(mEditTextFileName.getText().toString().trim(),
taskSnapshot.getStorage().getDownloadUrl().toString());
**/
Task urlTask=taskSnapshot.getStorage().getDownloadUrl();
而(!urlTask.issusccessful());
Uri downloadUrl=urlTask.getResult();
Log.d(标记“onSuccess:fireBase下载url:”+downloadUrl.toString());
Upload Upload=新上载(mEditTextFileName.getText().toString().trim(),downloadUrl.toString());
字符串uploadId=mDatabaseRef.push().getKey();
mDatabaseRef.child(uploadId).setValue(upload);
//创建一个新条目,其中包含我们上传的仪表数据
//recycler视图将使用这些条目从中获取数据
}
})
.addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
Toast.makeText(getContext(),e.getMessage(),Toast.LENGTH_SHORT).show();
}
})
.addOnProgressListener(新的OnProgressListener(){
@凌驾
public void onProgress(UploadTask.TaskSnapshot TaskSnapshot){
双进度=(100.0
<application
<activity android:name="com.example.johan.johansteve.ImageActivity"/>
</application>