通过使用手机的图像查看器从通过隐性意图资产文件夹错误加载图像(Error Loading image

2019-10-29 11:56发布

我试图通过使用隐式意图显示通过手机的摄像头的图像浏览器应用程序不同的伦敦地铁地图。 我曾在资源文件夹tube_map.gif图像文件,但是当我尝试加载该文件,应用程序会显示无法找到项目 。 我觉得我是在指定文件路径不正确。 我也跟着下面的视频。 唯一的区别是,在视频,图像文件存储在手机的SD卡,而在我的情况下,它存储在资源文件夹。 视频可以通过这个链接可以看到 。 我的代码如下:

package uk.ac.kingston.mobileTechnology.k1059045.trainCountdown;

import java.io.File;

import uk.ac.kingston.mobileTechnology.k1059045.trainCountdown.R;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.webkit.WebView;
import android.widget.ImageView;
import android.widget.Toast;

public class ViewTubeMap extends Activity{

String[] maps = {"TUBE","NATIONAL RAIL","OVERGROUND","DLR","TRAMLINK","RIVER BUS","TOURISTS (Tube Map)","TOURISTS (Bus Map)","RAIL CONNECTIONS","TOILET FACILITIES"};

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    //setContentView(R.layout.tube_map_layout);

     AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Pick a Map");
               builder.setItems(maps, new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int which) {
                   // The 'which' argument contains the index position
                   // of the selected item
                       switch(which){

                       case(0):
                           makeToast("Case 0");
                           Intent intent = new Intent();
                                   intent.setAction(android.content.Intent.ACTION_VIEW);
                           File image = new File("assets/tube_map.gif");
                           intent.setDataAndType(Uri.fromFile(image), "image/*");
                           startActivity(intent);
                           break;

                       case(1):
                           makeToast("Case 1");
                           break;
                       case(2):
                           makeToast("Case 2");
                           break;
                       case(3):
                           makeToast("Case 3");
                           break;
                       case(4):
                           makeToast("Case 4");
                           break;
                       case(5):
                           makeToast("Case 5");
                           break;
                       case(6):
                           makeToast("Case 6");
                           break;
                       case(7):
                           makeToast("Case 7");
                           break;
                       case(8):
                           makeToast("Case 8");
                           break;
                       case(9):
                           makeToast("Case 9");
                           break;
                       }
               }
        });

       builder.create();
       builder.show();
}

public void makeToast(String message) {
    Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
}
}

任何人都可以请指导我有什么错我的代码或我如何可以访问我的图像和手机的摄像头图像查看程序显示呢? 谢谢

Answer 1:

资产是一个应用程序的一个私人区域,所以, 所幸没有其他应用程序可以访问其他应用程序的这个区域。 我想要么使通过SD卡(选项1)解决方法或使通过互联网提供的tubeMaps(不是本地),并从那里获得的图像(选项2)。

选项1:添加访问外部存储器的权限。 在活动开始从本地资产图像同步到外部存储设备,然后稍微改变你的代码,通过另一个文件对象与ACTION_VIEW意图指向外部存储一起。

选项2:你上传的tubemaps某处在互联网上,提供了一个网址给ACTION_VIEW意图。



文章来源: Error Loading image from asset folder through Implicit Intent by using Phone's Image viewer