android中activity可以響應外部的action的例子(可以
效果:
如果使自己的應用也出現在這個列表上,必須在menifest的這個activity下加入:
<activity android:name=".export.ShareActivity"> <intent-filter> <action android:name="android.intent.action.VIEW" /> <action android:name="android.intent.action.EDIT" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <data android:mimeType="application/pdf" /> <data android:mimeType="image/bmp" /> <data android:mimeType="image/tiff" /> <data android:mimeType="image/gif" /> <data android:mimeType="image/jpeg" /> <data android:mimeType="image/x-ms-bmp" /> <data android:mimeType="image/png" /> <data android:mimeType="image/x-pcx" /> <data android:mimeType="image/targa" /> <data android:mimeType="image/x-photoshop" /> <data android:mimeType="text/plain" /> <data android:mimeType="text/xml" /> <data android:mimeType="text/html" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <data android:host="*" android:mimeType="*/*" android:pathPattern=".*\.pdf" android:scheme="file" /> <data android:host="*" android:mimeType="*/*" android:pathPattern=".*\.jpg" android:scheme="file" /> <data android:host="*" android:mimeType="*/*" android:pathPattern=".*\.bmp" android:scheme="file" /> <data android:host="*" android:mimeType="*/*" android:pathPattern=".*\.png" android:scheme="file" /> <data android:host="*" android:mimeType="*/*" android:pathPattern=".*\.txt" android:scheme="file" /> </intent-filter> </activity>
然後在activity的oncreate上接收這個intent:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = this.getIntent(); int flags = intent.getFlags(); if ((flags & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0) { if (intent.getAction() != null && Intent.ACTION_VIEW.equals(intent.getAction())) { if (SCHEME_FILE.equals(intent.getScheme()) || SCHEME_CONTENT.equals(intent.getScheme())) { String i_type = getIntent().getType(); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); mImportingUri = intent.getData(); System.out.println("====mImportingUri=" + mImportingUri); InputStream is = null; try { is = getContentResolver().openInputStream(mImportingUri); } catch (Exception e) { System.out.println("====e=" + e); } if (mImportingUri != null && SCHEME_FILE.equalsIgnoreCase(mImportingUri.getScheme())) { //Is file startToCopyFile(is); } else if (mImportingUri != null && SCHEME_CONTENT.equalsIgnoreCase(mImportingUri.getScheme())) { startCopyMedia(is); } } } } }
private boolean startToCopyFile(InputStream is) { String fileName = getSDPath() + tmpPath + File.separator + getName(mImportingUri); makesureFileExist(fileName); File toFile = new File(fileName); CopyThread mCopyThread = new CopyThread(is, toFile); new Thread(mCopyThread).start(); return true; } private class CopyThread implements Runnable { private File toFile; private InputStream fosfrom = null; public CopyThread(InputStream fosfrom, File toFile) { this.fosfrom = fosfrom; this.toFile = toFile; } @Override public void run() { try { TimeUnit.MILLISECONDS.sleep(800); FileInputStream fosfrom = null; if (this.fosfrom != null) { fosfrom = (FileInputStream) this.fosfrom; } FileOutputStream fosto = new FileOutputStream(toFile); byte bt[] = new byte[1024]; int c; int time = 0; while ((c = fosfrom.read(bt)) > 0) { fosto.write(bt, 0, c); } if (fosfrom != null) { fosfrom.close(); } fosto.close(); } catch (Exception e) { return; } finally { try { if (this.fosfrom != null) { this.fosfrom.close(); } } catch (IOException e) { } } } }
如果發現要匯入的檔案是txt格式,則我們在sd卡下建立一個tmp的資料夾,把這個檔案複製進去:
程式碼在:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4369/viewspace-2818944/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android中應用是否可以接入微信SDK分享應用內的短視訊功能?Android
- ()Android中的Activity建立與週期Android
- Android中Activity的四種啟動方式Android
- Android中Context、Activity、ApplicatioAndroidContextAPP
- 仿寫Android的ActivityAndroid
- Android Activity的基本理解Android
- Android基本控制元件和Activity的基本應用Android控制元件
- Android的基本控制元件和Activity的應用總結Android控制元件
- android檢視當前應用的的包名和activityAndroid
- CSS中可以和不可以繼承的屬性CSS繼承
- android可以無限迴圈滑動的ViewPagerAndroidViewpager
- Android-Activity的啟動模式Android模式
- 【筆記】【Android】Activity的Task模式筆記Android模式
- Android四大元件——Activity——Activity的生命週期Android元件
- 應收單稽核中可以上傳附件
- Java可以應聘的崗位有哪些?Java
- 企業IT可以真正應用AI的地方AI
- Android Activity是如何啟動的?Activity的生命週期是如何呼叫的?Android
- Linux的中斷可以巢狀嗎?Linux巢狀
- 可以中斷的非同步操作非同步
- ?好訊息!Android 模擬器可以執行 ARM 應用了Android
- 響應式程式設計在Android 中的一些探索程式設計Android
- interface 中的方法不可以是static 的
- Android開發教程 - 使用Data Binding(三)在Activity中的使用Android
- Android Spotify 將可以輕鬆選擇想要的音樂Android
- 可以通過response物件相關api利用http響應訊息約定來控制對端瀏覽器對該訊息的快取行為(例子)物件APIHTTP瀏覽器快取
- 10種可以遷移到雲的應用程式
- JAVA中的註解可以繼承嗎?Java繼承
- JS 中可以提升幸福度的小技巧JS
- MySQL 8.0 中的索引可以隱藏了!MySql索引
- Android中Activity設計思想個人理解Android
- Android之android:theme設定在Application 和 Activity的區別AndroidAPP
- Android Activity生命週期的一點感悟Android
- Android 9 Activity的載入和顯示Android
- Android Dialog風格彈出框的ActivityAndroid
- Activity 的 "啟動流程"(基於 Android 9.0)Android
- SpringBoot中的響應式web應用Spring BootWeb
- 應用上雲可以有多快?