亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Android上通過Intent選擇任何類型的文件

在Android上通過Intent選擇任何類型的文件

慕少森 2019-12-20 10:06:15
我想為可以返回任何文件的應用程序啟動一個Intentchooser目前,我使用(從Android電子郵件源代碼復制的文件附件)Intent intent = new Intent(Intent.ACTION_GET_CONTENT);intent.addCategory(Intent.CATEGORY_OPENABLE);intent.setType("*/*");Intent i = Intent.createChooser(intent, "File");startActivityForResult(i, CHOOSE_FILE_REQUESTCODE);但是它僅在我的Galaxy S2上顯示“圖庫”和“音樂播放器”。該設備上有一個文件瀏覽器,我希望它出現在列表中。我還希望照相機應用程序顯示在列表中,以便用戶可以拍攝照片并通過我的應用程序發送。如果我安裝了Astro文件管理器,它也會響應該意圖。我的客戶僅是Galaxy SII所有者,鑒于他們已經具有基本但足夠的文件管理器,因此我不想強迫他們安裝Astro文件管理器。關于如何實現此目標的任何想法嗎?我敢肯定,我已經看到默認的文件管理器出現在這樣的菜單中以選擇文件,但是我不記得是哪個應用程序了。
查看完整描述

3 回答

?
慕尼黑8549860

TA貢獻1818條經驗 獲得超11個贊

不是用于相機,而是用于其他文件。


在我的設備中,我已經ES File Explorer安裝好了,這對我來說很簡單。


Intent intent = new Intent(Intent.ACTION_GET_CONTENT);

intent.setType("file/*");

startActivityForResult(intent, PICKFILE_REQUEST_CODE);


查看完整回答
反對 回復 2019-12-20
?
紫衣仙女

TA貢獻1839條經驗 獲得超15個贊

三星文件瀏覽器不僅需要自定義操作(com.sec.android.app.myfiles.PICK_DATA),而且部分類(意向。CATEGORY_DEFAULT)和MIME類型應該額外進行傳遞。


Intent intent = new Intent("com.sec.android.app.myfiles.PICK_DATA");

intent.putExtra("CONTENT_TYPE", "*/*");

intent.addCategory(Intent.CATEGORY_DEFAULT);

您也可以使用此操作來打開多個文件:com.sec.android.app.myfiles.PICK_DATA_MULTIPLE無論如何,這是我的解決方案,可在Samsung和其他設備上使用:


public void openFile(String mimeType) {


        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);

        intent.setType(mimeType);

        intent.addCategory(Intent.CATEGORY_OPENABLE);


        // special intent for Samsung file manager

        Intent sIntent = new Intent("com.sec.android.app.myfiles.PICK_DATA");

         // if you want any file type, you can skip next line 

        sIntent.putExtra("CONTENT_TYPE", mimeType); 

        sIntent.addCategory(Intent.CATEGORY_DEFAULT);


        Intent chooserIntent;

        if (getPackageManager().resolveActivity(sIntent, 0) != null){

            // it is device with Samsung file manager

            chooserIntent = Intent.createChooser(sIntent, "Open file");

            chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, new Intent[] { intent});

        } else {

            chooserIntent = Intent.createChooser(intent, "Open file");

        }


        try {

            startActivityForResult(chooserIntent, CHOOSE_FILE_REQUESTCODE);

        } catch (android.content.ActivityNotFoundException ex) {

            Toast.makeText(getApplicationContext(), "No suitable File Manager was found.", Toast.LENGTH_SHORT).show();

        }

    }

該解決方案對我來說效果很好,也許對其他人也很有用。


查看完整回答
反對 回復 2019-12-20
?
拉丁的傳說

TA貢獻1789條經驗 獲得超8個贊

在銀河上為我完成的這項工作請注意其顯示聯系人,設備上安裝的文件管理器,圖庫,音樂播放器


private void openFile(Int  CODE) {

    Intent i = new Intent(Intent.ACTION_GET_CONTENT);

    i.setType("*/*");

    startActivityForResult(intent, CODE);

}

在這里獲取onActivityResult活動的路徑。


protected void onActivityResult(int requestCode, int resultCode, Intent data) {

     String Fpath = data.getDataString();

    // do somthing...

    super.onActivityResult(requestCode, resultCode, data);


}


查看完整回答
反對 回復 2019-12-20
  • 3 回答
  • 0 關注
  • 1465 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號