這期內容當中小編將會給大家帶來有關Android開發中怎么獲取瀏覽器當前頁面的截圖,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
成都創新互聯公司是專業的河南網站建設公司,河南接單;提供成都網站制作、成都網站建設,網頁設計,網站設計,建網站,PHP網站建設等專業做網站服務;采用PHP框架,可快速的進行河南網站開發網頁制作和功能擴展;專業做搜索引擎喜愛的網站,專業的做網站團隊,希望更多企業前來合作!
首先,新建一個 BrowserScreenShotActivity.java,在 AndroidManifest.xml 注冊一下 <intent-filter>。
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.littlejie.demo"> <!-- 讀寫權限 --> <!-- 用于讀取瀏覽器分享時生成的屏幕截圖 --> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <application android:name=".modules.DemoApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <!-- some other thing --> <!-- 注冊 Intent,用于接受瀏覽器分享 --> <activity android:name=".modules.advance.BrowserScreenShotActivity" android:launchMode="singleTask"> <intent-filter> <action android:name="android.intent.action.SEND"/> <!-- 發送多個數據 --> <action android:name="android.intent.action.SEND_MULTIPLE"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="*/*"/> </intent-filter> </activity> </application> </manifest>
接下去,在瀏覽器中隨便打開一個頁面,分享至 Demo,這里有個問題,就是:屏幕截圖數據在 Intent 中對應的 Key 我們并不知道,那怎么辦呢?打斷點啊!
通過斷點查看 Intent 的數據結構,發現 Intent 中的 mMap 成員變量含有一個 Uri,格式如下:content://com.android.chrome.FileProvider/BlockedFile_33215122012582,一眼看去就猜測這個 Uri 是 Chrome 通過 ContentProvider 供其他程序調用的,雖然與一開始猜測有已 .jpg 和 .png 結尾的數據不太一致,但好歹是有所發現。
恩,現在還有一個問題,那就是 mMap.value[3] 對應的 key 值是多少?在上述斷點界面根本就差看不到,但是 Android Studio 是很強大的,只是你沒發現而已,既然 mMap 是一個 Map,那么久能通過 keySet() 方法獲取 Map 的 key。接下來就是 Android Studio 大展拳腳的時間。
如上圖所示的,在 Debug 界面,點擊最后一個圖標:Evaluate Expression(快捷鍵:option + f8)。在彈出的對話框中輸入如下內容,回車,你會發現 Map 的 key 都出來了:
通過與第一幅圖對比,發現下標為3的值(share_screenshot_as_stream)為我們需要的 key。
布局比較簡單,這里就不貼了,簡單截取 BrowserSrceenShotActivity.java 中的代碼:
@Override protected void onResume() { super.onResume(); if (getIntent() == null) { return; } Uri screenShot = getIntent().getExtras().getParcelable("screen_shot_as_stream"); if (screenShot == null) { ToastUtil.showDefaultToast("獲取瀏覽器截屏失敗~"); return; } try { //授權Uri的讀取權限 //若不授權,在 Android 6.0 以上測試崩潰 //https://thinkandroid.wordpress.com/2012/08/07/granting-content-provider-uri-permissions/ //第一個參數為需要授權的apk包名 grantUriPermission("com.littlejie.demo", screenShot, Intent.FLAG_GRANT_READ_URI_PERMISSION); //通過 Uri 獲取截屏圖片的輸入流 InputStream is = getContentResolver().openInputStream(screenShot); mIvScreenShot.setImageBitmap(BitmapFactory.decodeStream(is)); } catch (FileNotFoundException e) { e.printStackTrace(); } }
運行結果如下:
對于獲取 Chrome 瀏覽器分享頁面的截屏就告一段落,閑著沒事,自己又測試了幾個瀏覽器,包括系統內置瀏覽器、QQ瀏覽器、UC瀏覽器、百度瀏覽器、火狐瀏覽器,發現每個瀏覽器的差異很大。
上述就是小編為大家分享的Android開發中怎么獲取瀏覽器當前頁面的截圖了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創新互聯行業資訊頻道。
網站標題:Android開發中怎么獲取瀏覽器當前頁面的截圖
分享鏈接:http://www.2m8n56k.cn/article8/pccgip.html
成都網站建設公司_創新互聯,為您提供搜索引擎優化、電子商務、網站設計、建站公司、定制網站、靜態網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯