日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

安卓获取浏览器上网记录_Android 获取浏览器当前分享页面的截屏示例

發布時間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 安卓获取浏览器上网记录_Android 获取浏览器当前分享页面的截屏示例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天在項目中碰見這么一個需求:獲取 Chrome 瀏覽器分享時,頁面的截屏。靜下來一想,既然是分享,那么肯定得通過 Intent 來傳遞數據,如果真的能獲取到 Chrome 分享頁面時的截屏,那么 Intent 的數據中,一定有 .jpg 或者 .png 結尾的數據。說干就干,Demo 寫起來。

首先,新建一個 BrowserScreenShotActivity.java,在 AndroidManifest.xml 注冊一下 。

package="com.littlejie.demo">

android:name=".modules.DemoApplication"

android:allowBackup="true"

android:icon="@mipmap/ic_launcher"

android:label="@string/app_name"

android:supportsRtl="true"

android:theme="@style/AppTheme">

android:name=".modules.advance.BrowserScreenShotActivity"

android:launchMode="singleTask">

接下去,在瀏覽器中隨便打開一個頁面,分享至 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瀏覽器、百度瀏覽器、火狐瀏覽器,發現每個瀏覽器的差異很大。

系統瀏覽器、UC瀏覽器與 Chrome 相差不大,只是 key 變成了 share_full_screen 和 file

QQ瀏覽器的分享行為與分享文件很相似,其 key 為 android.intent.extra.STREAM(Intent.EXTRA_STREAM)。

百度瀏覽器是個什么鬼就不知道了,默默的把應用圖標給分享過來了

火狐瀏覽器不支持分享頁面截圖

恩,就這么多,獲取瀏覽器分享頁面截屏主要還是靠瀏覽器的支持,真的市面上這么多瀏覽器適配起來還真麻煩。這次主要對 Android Studio 強大的 Debug功能進行了學習。PS:Android Studio真是極其強大的工具,用好它事半功倍,唯一不足的就是太耗性能。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

總結

以上是生活随笔為你收集整理的安卓获取浏览器上网记录_Android 获取浏览器当前分享页面的截屏示例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。