2017年9月25日 星期一

【Android Intent】用Intent啟動Share選項將文章分享給其他APP

關鍵在於將Intent送給Activity Chooser。

程式碼如下:

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, "要分享的內容");
sendIntent.setType("text/plain");
startActivity(Intent.createChooser(sendIntent, [範例...分享標題...]));
點此看Google Guide文件


如果要分享圖片,使用........

Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage);
shareIntent.setType("image/jpeg");
startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.send_to)));

uriToImage是指Uri物件可以讀取檔案。

2017年9月22日 星期五

使用Meta-data的方式。PackagetManager、ActivityInfo、ComponentName

AndroidManifest檔中,Application跟Activity下可以加入<meta-data>這個標籤。

這個標籤有兩大類屬性,一個是name,另一個就是value。


可以使用(加入)<meta-data>標籤的類別除了Application和Activity外,Service和Reciever也可以。

主要取得方式是在加入了<meta-data>標籤的類別實作下呼叫getPackageManager,然後再用PackageManager取得ApplicationInfo/ActivityInfo/ServiceInfo/RecieverInfo。

取得各種Info需要搭配ComponentName,不同的狀況下取得ComponentName的方式也都不同。

 Activity有自帶getComponentName()。

 Service和Reciever下要使用ComponentName這個類別,它需要傳入一個Context,和Service或Reciever的Class。

Application則是用getPackageName取得的資料即可。

取得Info後,裏頭有個參數物件「meta」,下面有各種取得資料的函數。只要找到相對應的函數(例如meta-data是字串,就找getString..以此類推),然後輸入名稱(<meta-data>標籤中的name)即可。



========================================================

應用上,這應種是種將程式的邏輯/功能的控制參數分散到AndroidManufest中去設定的技巧。

例如將「連線網址」寫成一個<meta-data>,就可以用一個父類別快速大量複製出連線到不同網站但有相似行為的Activity甚至是APP。

2017年9月20日 星期三

中國大陸的長城擋連線,無法分享檔案

如標題。

大陸內的硬碟空間(微信、百度、QQ)註冊非常繁瑣,都要有個手機門號才能使用,而國外國際間慣用的網路空間幾個有名的大站都被一律封鎖。

如果要知道國外空間能否讓大陸內部取得,可以使用測試網站看看能否連線.......


這次使用的是WEBKAKA....


 這是它的首頁...選擇「國內網站測速」。


選好了往下滑,可以看到這個頁面,右邊的輸入欄就是用來要測速/可否連線的網址輸入欄。




可以看到OpenDrive網站可以連通。