當前位置:首頁 » 安卓系統 » android應用分享

android應用分享

發布時間: 2023-02-18 05:04:17

Ⅰ 利用 Android 系統原生 API 實現分享功能(2)

在之前的一篇文章 利用 Android 系統原生 API 實現分享功能 中主要說了下實現流程,但具體實施起來其實還是有許多坑要面對。那這篇文章就是提供一個封裝好的 Share2 庫供大家參考。

GitHub 項目地址:Share2

看過上一篇文章的同學應該知道,要調用 Android 系統內建的分享功能,主要有三步流程:

更多相關內容請參考上一篇,這里就不再重復贅述了。

知道大致的實現流程後,其實只要解決下面幾個問題後就可以具體實施了。

這其實是直接決定了最終的實現形態,我們知道常見的使用場景中,只是為了在應用間分享圖片和一些文件,那對於那些只是分享文本的產品而言,兩者實現起來要考慮的問題完全不同。

所以為了解決這個問題,我們可以預先定好支持的分享內容類型,針對不同類型可以進行不同的處理。

在 Share2 中,一共定義了5種類別的分享內容,基本能覆蓋常見的使用場景。在調用分享介面時可以直接指定內容類型,比如像文本、圖片、音視頻、已經其他各種類型文件。

對於不同類別的內容,可能會有不同的來源。比如文本可能就只是一個字元串對象,而對於分享圖片或其他文件,我們需要一個 Uri 來標識一個資源。這其實就引出來具體實施時的一個大問題,如何獲取要分享文件的 Uri,並且這個 Uri 要能被接收分享內容的應用處理才行 。

那麼,如何獲取要分享內容文件的 Uri?如果處理才能讓接收方也能夠根據 Uri 獲取到文件?

我們把文件 Uri 的來源劃分為下面三種類型:

常見場景 :通過文件選擇器獲取一個文件的 Uri

通過這種方式獲取到的 Uri 是由系統 ContentProvider 返回的,在 Android 4.4 之前的版本和之後的版本有較大的區別,我們後面再說怎麼處理。只要先記住這種系統返回給我們的 Uri 就行了。

比如調用系統相機進行拍照或錄制音視頻,要傳入一個生成目標文件的 Uri ,從 7.0 開始我們需要用到 FileProvider 來實現。

如果用到了 FileProvider 就要注意跟系統 ContentProvider 返回 Uri 的區別,比如我們在 Manifest 中對 FileProvider 配置 android:authorities="com.xx.xxx.fileProvider" 屬性,那這時系統返回的 Uri 格式就變成了 : content://com.xx.xxx.fileProvider... ,對於這種類型的 Uri 我們姑且叫 自定義 FileProvider 返回的 Uri ,後面一並說怎麼處理。

我們調用 new File 時需要傳入指定的文件路徑,這個絕對路徑通常是: /storage/emulated/0/... 這種樣式,我們要想調用分享時也要變成 Uri 的形式才可以,那麼如何把文件路徑變成一個文件 Uri ?這個問題下面也一並進行回答。

前面提到了文件 Uri 的三種分類,對應不同類型處理方式也不同,不然你最先遇到的問題就是:

這是由於對系統返回的 Uri 缺失訪問許可權導致,所以要對應用進行臨時訪問 Uri 的授權才行,不然會提示許可權缺失。

對於要分享系統返回的 Uri 我們可以這樣進行處理:

需要注意的是對於自定義 FileProvider 返回 Uri 的處理,即使是設置臨時訪問許可權,但是分享到第三方應用也會無法識別該 Uri

典型的場景就是,我們如果把自定義 FileProvider 的返回的 Uri 設置分享到微信或 QQ 之類的第三方應用,會提示文件不存在,這是因為他們無法識別該 Uri。

關於這個問題的處理其實跟下面要說的把文件路徑變成系統返回的 Uri 一樣,我們只需要把自定義 FileProvider 返回的 Uri 變成第三方應用可以識別系統返回的 Uri 就行了。

創建 FileProvider 時需要傳入一個 File 對象,所以直接可以知道文件路徑,那就把問題都轉換成了: 如何通過文件路徑獲取系統返回的 Uri

下面是根據傳入的 File 對象和類型來查詢系統 ContentProvider 來獲取相應的 Uri,已經按照不同文件類型在不同系統版本下的進行了適配。

其中 forceGetFileUri 方法是通過反射實現的,處理 7.0 以上系統的特殊情況下的兼容性,一般情況下不會調用到。Android 7.0 開始不允許 file:// Uri 的方式在不同的 App 間共享文件,但是如果換成 FileProvider 的方式依然是無效的,我們可以通過反射把該檢測幹掉。

通過 File Path 轉成 Uri 的方式,我們最終統一了調用系統分享時傳入內容 Uri 的三種不同場景,最終全部轉換為傳遞系統返回的 Uri,讓第三方應用能夠正常的獲取到分享內容。

Share2 按照上述方法進行了具體實施,可以通過下面的方式進行集成:

分享圖片到指定界面,比如分享到微信朋友圈

GitHub 項目地址:Share2

安卓手機之間怎麼互傳軟體

若使用vivo手機,分享軟體的方法:
游戲中心:在游戲中心--搜索軟體--進入軟體詳情界面--點擊右上角豎三點--分享--選擇分享方式即可;
應用商店:在應用商店--搜索軟體--進入軟體詳情界面--點擊右上角分享圖標--選擇分享方式即可;
互傳:進入互傳--傳送文件--兩台設備分別選擇「我要發送」、「我要接收」--掃描後選擇對方連接--發送方選擇軟體--發送即可。

Ⅲ android怎麼把其他app的內容分享到自己的app里

很多時候我們的應用在使用微信分享內容之後,希望其他用戶點擊該分享內容能夠跳轉到我們的App,以實現閉環,這樣的分享才是最有價值的。這種需求涉及到不同應用之間的交互,雖然微信提供了分享SDK,但仍然有不少限制,現在總結兩種在Android平台上初步認為可行的方案:

1.分享網頁,從分享的網頁跳轉回原App。

2.分享WXAppExtendObject類型的數據,且只能分享給好友,好友從聊天列表點擊收到的分享內容可以直接跳轉第三方App(前提是好友手機上已經安裝了該App)。下面來詳細說明兩個方案,由於是在項目中實測的,為了隱私及行文方便,假設我們的應用的名字為MyApp,效果截圖也就不再展示。

方案一:

從WebView(該WebView從屬於另一個App,並非我們自己的App)跳轉到MyApp的某個界面(這里以跳轉到MyApp的Acticity A為例)。具體的實現邏輯如下:

(1)該WebView顯示的網頁內容只是一個超鏈接,自定義了一個scheme=myapp://,後邊可以附加一些參數,如果需要從網頁向App傳值的話。

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>This is title</title>

</head>

<body>

<a href=』myapp://id=909624′>Jump to MyApp</a>

</body>

</html>

該網頁在WebView打開後就是一個簡單的超鏈接,截圖不再附。

(2)MyApp中的Activity A需要配置特定的infliter,如下:

<activity

<intent-filter>

<data android:scheme="myapp" />

<action android:name="android.intent.action.VIEW" />

<category android:name="android.intent.category.DEFAULT" />

<category android:name="android.intent.category.BROWSABLE"/>

</intent-filter>

</activity>

(3)當在WebView上點擊上述自定義的超鏈接時就可以打開MyApp的A界面,所傳遞的參數也可以在所跳轉到的Activity中獲取,方法如下:

getIntent().getScheme();//獲得Scheme名稱

getIntent().getDataString();//獲得Uri全部路徑,根據自定義的格式解析字元串即可獲取我們上面附加的參數。可行的實施方案:

MyApp中調用微信分享分享網頁內容,只需要在網頁中嵌入跟Android客戶端約定好的超鏈接協議scheme,那麼點擊時就可以跳轉到MyApp。

問題1:如果用戶安裝了MyApp,就可以點擊網頁跳轉,如果沒有安裝MyApp的話,WebView就會提示找不到該頁面。製作網頁時可以在網頁中做檢測,沒安裝MyApp的話,頁面就重定向到應用的下載頁面。

問題2:在普通App的WebView中和瀏覽器中上述機制是可以的,但是在微信的WebView是不可以點擊直接跳轉我們的應用的,可能是微信做了某些過濾,且僅僅支持跟微信有深度合作的應用的跳轉,如大眾點評是可以的。針對這種情況,我們可以引導用戶使用瀏覽器打開所分享的網頁,然後點擊就可以跳轉應用了。方案二:

使用微信SDK分享WXAppExtendObject數據給好友,好友點擊跳轉MyApp的某個頁面(需要在分享時傳遞構造跳轉Intent的參數)。

1.該類型的分享(具體請參考微信分享SDK)可以帶幾個參數,參數中必須附帶一些構造跳轉Intent的數據。

2.好友點擊分享的內容,回調IWXAPIEventHandler介面的類的onReq方法,具體為

ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX:這種情況才會調用,此時可以取出分享時附帶在參數中的一些數據,構造一個跳轉Intent,調用startActivity(intent) 來打開MyApp。

由於是項目實測,這種實現方式的截圖也就不傳了。

問題1:該分享方式只能分享給好友,不能分享到朋友圈。

問題2:如果好友沒安裝MyApp,點擊微信中好友分享過來的消息後無反應,無法提醒「未安裝MyApp,請下載」,因為這些邏輯要實現的話本身就是在MyApp裡面寫的,原本沒裝的話根本無法檢測。

問題3:WXAppExtendObject類型的分享,數據有大小限制,

extInfo(String)限制2KB;

fileData(byte[])供第三方使用的文件二進制數據,最大10M;

filePath:(String)Local directory of the file provided for applications,本身長度最大10KB,文件大小同上,不超過10M。以上就是Android平台好友點擊微信分享的內容後跳轉來源App的兩種實現方案,各有優點和局限性,請根據自身業務需求選擇合適的分享方式,由於未能附截圖說明,如有哪裡表述不清楚的,歡迎留言討論。

Ⅳ 怎樣在兩個安卓手機間傳送應用程序

在兩個安卓手機間傳送應用程序步驟如下:


1、點擊FV。

Ⅳ 怎麼分享軟體(安卓手機)

若使用的是vivo手機,可下載「互傳」軟體--點擊軟體中--我要發送--另一部手機進入互傳選擇我要接收--連接後,選擇需要分享的軟體--發送即可將軟體分享給好友。

Ⅵ 安卓如何分享已安裝軟體

安卓分享已安裝軟體的具體操作步驟如下:

1、首先我們打開手機,打開自己的手機QQ,默認自動進入到近期的聊天界面,找到想要分享的好友點擊它。

Ⅶ 安卓和蘋果手機互傳軟體

相信大家十一小長假期間肯定用手機拍攝了不少的照片,盡管現在智能手機拍照已變得相當方便,隨手就可以拍照片、錄制小視頻,但如果將這幾十張或者容量較大的視頻分享給同行好友的時候,大家會採用什麼無線的傳輸方式呢?

大多數用戶會比較直接的想到微信傳輸,的確微信非常快捷的一種無線傳輸方式。但是當照片數量超過9張,或者視頻大小超過限制的時候,還有照片非原圖會被壓縮,這時候你就會發現微信也有很多不方便的地方,而且還會浪費手機流量。
今天我們就來介紹幾種常見傳輸文件的方式,或許在你分享照片的時候能有所幫助。
●iPhone與iPhone傳輸 AirDrop跨設備很簡單
手機與手機傳輸文件是移動出行中最為常見的方式,按照內置手機系統劃分大體分為兩大陣營,一個就是Android系,很多國產手機基本上都是基於Android系統深度定製並優化的手機操作系統,另一個就是iPhone手機的iOS系統。
點擊播放 GIF 1.1M
先來說iPhone與iPhone之間傳輸照片和視頻的方法,其實這個功能果粉們應該都很熟悉,就是AirDrop隔空投送功能,使用「隔空投送」與附近的其他 Apple 設備共享和接收照片、文稿等,可以跨設備、跨平台傳輸數據,iPhone、iPad、Mac 之間互傳文件基本暢通無阻。

確保要接收內容的用戶就在附近,並且在藍牙和 Wi-Fi 范圍內。不用數據流量,可以支持蘋果設備與蘋果設備之間的數據傳輸,而且速度極快,非常方便。使用方法很簡單,打開一個 App,輕點「共享」或「共享」按鈕


●Android與Android 傳輸自成一派
如果是Android與Android手機互傳文件方式相對比較多,如果兩款同為一個品牌旗下的手機,就比較簡單了。
例如兩款均為華為/榮耀手機的話,通過Huawei Share就可以完成分享,Huawei Share是一種文件快速分享方式,可以在華為設備之間方便快捷地傳輸圖片、視頻等文件。它通過藍牙快速發現周邊其他華為設備,然後通過 WLAN 直連快速傳輸文件,傳輸過程不需要流量。
點擊播放 GIF 0.7M
使用方法很簡單,Huawei Share 使用 WLAN 和藍牙來傳輸信息,打開 Huawei Share 開關後,WLAN 和藍牙開關會自動打開。
使用 Huawei Share 給他人發送文件:從狀態欄處向下滑動,打開通知面板,點擊

打開 Huawei Share。選擇要分享的文件,點擊分享。發現附近的設備後,點擊要接收文件的設備名稱發送文件。

除了華為和榮耀手機之外,Android版本的AirDrop也有了統一標准。小米、OPPO、vivo、魅族、一加、realme和黑鯊組成了互傳聯盟,互傳聯盟雖然沒有覆蓋到所有品牌,但大家常見的國產智能手機都可以找到。如果你的手機是其中任何一個品牌下的,那麼在傳輸照片、視頻或者文檔時就變得更加簡單了。

互傳功能可以不費流量輕松地將文件快速分享給附近的其他手機。 例如在相冊選擇照片(或者在文件管理選擇文件),點擊「發送」,彈出發送面板; 然後在接收方手機的控制中心打開互傳的開關;此時,在發送方的發送界面就能看到接收方的頭像,點擊即可開始發送文件。
既然華為、榮耀未加入互傳聯盟,因此無法實現快速互傳。由於華為自帶Huawei Share功能,能夠實現旗下手機端和PC端的快速傳輸,3.0 版本還推出了基於 NFC 的一碰即傳功能。華為自有產品互傳基本已做到全覆蓋,但如果與其他國產手機進行互傳,還需要靠網盤、社交軟體和第三方快傳軟體來實現。
●iPhone與Android傳輸 似乎並不友好
最後一種傳輸組合,兩端系統相對就不那麼友好了。iPhone和Android本身屬於兩個不同操作系統,因此傳輸數據協議很難做到統一。

有網友說可以藉助手機上的藍牙傳輸,沒錯!單純的藍牙的確可以傳輸,不過速度,距離和穩定性肯定讓你抓狂,有時候傳輸一張照片可能都很困難。
實際上,網盤、釘釘、QQ和微信這幾種方法個人比較推薦使用,這些軟體通用性比較高而且手機中基本都是必裝軟體。前提是如果你們手機上流量管夠的話,其實iPhone和Android手機之間傳輸文件,尤其是高清圖片和視頻不會遇到太大的問題。
跨系統傳輸文件也可以藉助快傳類軟體來實現,例如國內使用比較多的互傳、閃傳、快牙、茄子快傳、AirDroid等。實現原理類似,就是用WiFi來傳輸文件。一般來說是用一個手機開啟熱點,另一個手機連接熱點,然後利用快牙或茄子等APP快傳來傳輸。

Ⅷ 安卓手機點住APP怎麼沒有分享按鈕

桌面沒有分享功能。
1、安卓手機點住APP怎麼沒有分享按鈕是因為桌面沒有分享功能。
2、可以點開該軟體在右上角會有三個點,點進去就可以分享該軟體了。

Ⅸ android app怎樣實現微信分享

使用微信SDK分享WXAppExtendObject數據給好友,好友點擊跳轉MyApp的某個頁面(需要在分享時傳遞構造跳轉Intent的參數)。

1.該類型的分享(具體請參考微信分享SDK)可以帶幾個參數,參數中必須附帶一些構造跳轉Intent的數據。

2.好友點擊分享的內容,回調IWXAPIEventHandler介面的類的onReq方法,具體為

ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX:這種情況才會調用,此時可以取出分享時附帶在參數中的一些數據,構造一個跳轉Intent,調用startActivity(intent) 來打開MyApp。

由於是項目實測,這種實現方式的截圖也就不傳了。

問題1:該分享方式只能分享給好友,不能分享到朋友圈。

問題2:如果好友沒安裝MyApp,點擊微信中好友分享過來的消息後無反應,無法提醒「未安裝MyApp,請下載」,因為這些邏輯要實現的話本身就是在MyApp裡面寫的,原本沒裝的話根本無法檢測。

問題3:WXAppExtendObject類型的分享,數據有大小限制,

extInfo(String)限制2KB;

fileData(byte[])供第三方使用的文件二進制數據,最大10M;

filePath:(String)Local directory of the file provided for applications,本身長度最大10KB,文件大小同上,不超過10M。

Ⅹ 安卓怎麼傳軟體給蘋果

以qq為例,其安卓給蘋果傳軟體的方法是:1、首先確保自己的手機安裝了QQ,並登錄它;2、接著在手機上找到文件管理,點擊打開它;3、然後在打開的頁面,點一下要傳送文件所在的文件夾,選中要傳送的文件,然後點擊菜單;4、隨後選擇分享,點擊發送給好友。5、選擇要發送文件的好友,然後點發送就可以了。這樣就實現了安卓和Iphone手機間的文件傳送。QQ(TencentQQ)是騰訊公司借鑒於ICQ開發的一款基於Internet的即時通信(IM)軟體,於1999年2月推出,是中國的社交軟體巨頭。QQ支持在線聊天、視頻通話、點對點斷點續傳文件、共享文件、網路硬碟、自定義面板、QQ郵箱等多種功能,並可與多種通訊終端相連。騰訊QQ是8億人在用的即時通訊軟體,不僅可以在各類通訊終端上通過QQ聊天交友,還能進行免費的視頻、語音通話,或者隨時隨地收發重要文件。

熱點內容
吃雞低配置手機如何開極致畫質 發布:2025-05-16 18:15:20 瀏覽:191
空密碼訪問 發布:2025-05-16 18:08:51 瀏覽:892
騰訊雲伺服器安全規則設置 發布:2025-05-16 17:51:33 瀏覽:650
k3伺服器不可用怎麼辦 發布:2025-05-16 17:51:30 瀏覽:537
編輯html源碼 發布:2025-05-16 17:45:45 瀏覽:65
邊的存儲方法 發布:2025-05-16 17:33:16 瀏覽:927
海量伺服器怎麼拆 發布:2025-05-16 17:31:07 瀏覽:211
運行與編譯的區別 發布:2025-05-16 17:25:02 瀏覽:824
c語言for中continue 發布:2025-05-16 17:20:14 瀏覽:648
ftp儲存 發布:2025-05-16 17:04:08 瀏覽:506