JWorld@TW the best professional Java site in Taiwan
      註冊 | 登入 | 全文檢索 | 排行榜  

» JWorld@TW » Java ME、Google Android 平台與 JavaCard 討論區 » Android  

按列印兼容模式列印這個話題 列印話題    把這個話題寄給朋友 寄給朋友    訂閱主題
reply to topicthreaded modego to previous topicgo to next topic
本主題所含的標籤
無標籤
作者 透過ACTION_PICK 取得的檔案,怎麼知道該檔案的實體路徑
knives





發文: 49
積分: 0
於 2010-08-25 19:11 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我參考了這個網頁
http://tomkuo139.blogspot.com/2010/02/android-choose-file.html
知道可以利用ACTION_PICK 可以存取到手機的檔案
可是我現在有兩個問題
我在原本的Layout:main.xml
有一個TextView,在按下它的時候,會跑出一個Dialog

1
2
3
4
 TextView upload_pic = (TextView) findViewById(R.id.upload_pic);
    
    upload_pic.setOnClickListener(upload_pic_click);
 


1
2
3
4
5
6
7
8
9
10
private TextView.OnClickListener upload_pic_click  = new TextView.OnClickListener()
  {
        @Override
        public void onClick(View v)
        {
          // TODO Auto-generated method stub
           
          showDialog(UPLOAD_PIC_DIA);
        }
      };


Dialog function :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 protected Dialog onCreateDialog(int id) {
     switch (id) {
     case UPLOAD_PIC_DIA:
       LI = LayoutInflater.from(app_photo_detail.this);
          v = LI.inflate(R.layout.upload_pic, null);
          Button btn = (Button)v.findViewById(R.id.buttonObj);
          btn.setOnClickListener( UC);
      
      return new AlertDialog.Builder(app_photo_detail.this)
        .setView(v)
        .setPositiveButton(R.string.submit,
        new DialogInterface.OnClickListener() {
          
          @Override
          public void onClick(DialogInterface dialog, int which) {
            // TODO Auto-generated method stub
            
            
          }
        }
        ).create();
      
     }
     return null;
   
   }


在這個Dialog會有一個叫選擇圖片的按鈕,按下去會 觸發 UC 這個function
同時這個Dialog裡面有一個 ImageView ,id為imageViewObj
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
  
 
 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        
        // 有選擇檔案
        if ( resultCode == RESULT_OK )
        {
          
            // 取得檔案的 Uri
            Uri uri = data.getData();
         
            if( uri != null )
            {
                // 利用 Uri 顯示 ImageView 圖片
              //String path = uri.toString();
               // ImageView iv = (ImageView)this.findViewById(R.id.imageViewObj);
               // iv.setImageURI( uri );
               // path = (new File(URI.create(path))).getAbsolutePath();
              setTitle(uri.toString());  //除錯用的
               
            }
            else
            {
              
                setTitle("無效的檔案路徑 !!");
            }
        }
        else
        {
            setTitle("取消選擇檔案 !!");
        }
    }
 
private OnClickListener UC  = new OnClickListener()
      {
        @Override
          public void onClick(View v)
          {
          // TODO Auto-generated method stub
              
              // 建立 "選擇檔案 Action" 的 Intent
              Intent intent = new Intent( Intent.ACTION_PICK );
              
              // 過濾檔案格式
              intent.setType( "image/*" );
              
              // 建立 "檔案選擇器" 的 Intent  (第二個參數: 選擇器的標題)
              Intent destIntent = Intent.createChooser( intent, "選擇檔案" );
              
              // 切換到檔案選擇器 (它的處理結果, 會觸發 onActivityResult 事件)
              startActivityForResult( destIntent, 0 );
         
          }
          
      };

問題來了:
我要怎麼去取得選到的檔案的絕對路徑,我在onActivityResult 裡有特別用setTitle 來印出目前檔案的uri
它得到的結果是像這樣的字串
1
content://media/external/1

可是路徑不是應該是像 /sdcard/xxx.jpg 這樣的嗎


reply to postreply to post
作者 Re:透過ACTION_PICK 取得的檔案,怎麼知道該檔案的實體路徑 [Re:knives]
jimwayne





發文: 220
積分: 0
於 2011-05-31 16:40 user profilesend a private message to userreply to postreply to postsearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
雖然這篇問題是很久以前的,不過由於正好在搜尋同樣的問題,所以還是回答一下~
小弟有搜尋到這篇似乎是問題解:
http://www.eoeandroid.com/thread-42982-1-1.html
不過小弟尚未測試,所以還不清楚是否確實可用。

2011/06/04 補:
確定上面連結的回覆是正解,可以取得類似 /./sdcard/.... 的位置
直接丟給 File 物件去讀取檔案就可以了。


jimwayne edited on 2011-06-04 22:55
reply to postreply to post
Java 工作者,但仍然是個初心者.....
» JWorld@TW »  Java ME、Google Android 平台與 JavaCard 討論區 » Android

reply to topicthreaded modego to previous topicgo to next topic
  已讀文章
  新的文章
  被刪除的文章
Jump to the top of page

JWorld@TW 本站商標資訊

Powered by Powerful JuteForum® Version Jute 1.5.8