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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 应用程序之间内容分享详解(二)

發(fā)布時間:2025/4/14 Android 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 应用程序之间内容分享详解(二) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載請注明出處:http://blog.csdn.net/xiaanming/article/details/9428613


Android 應用程序之間內容分享詳解(一)


之前給大家分享了你開發(fā)的應用程序給其他應用程序分享內容,想了解的朋友點擊:Android 應用程序之間內容分享詳解(一)今天分享的是從其他的應用程序接收內容,比如你開發(fā)了一個社交網絡的應用,你其中的某個Activity可以接受人們從其他的應用分享的東西,例如分享文字或者從圖庫分享圖片等等,接下來我們利用一個例子來講解從其他的應用接受內容

1.我們新建一個Android工程,名字為SharedContext,修改Manifest文件

我們需要在Manifest文件中定義這個Activity能接收什么樣的Intent,我們需要創(chuàng)建Intent過濾器,使用?<intent-filter>?元素來過濾我們能接收的Intent,下面我們舉個簡單的例子,相信大家知道舉一反三,下面的例子我們的應用程序可以處理文本,文本文件,單一的圖片和多張圖片,我們定義Manifest文件如下

?

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.sharedcontext"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="16" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="com.example.sharedcontext.MainActivity"android:label="@string/app_name" ><!-- 應用程序的啟動 Intent,我們例子只有一個Activity--><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter><!-- 處理文字的Intent 我們需要定義action, category, 和文字對應的MIME --><intent-filter><action android:name="android.intent.action.SEND" /><category android:name="android.intent.category.DEFAULT" /><data android:mimeType="text/*" /></intent-filter><!-- 處理單張圖片的Intent --><intent-filter><action android:name="android.intent.action.SEND" /><category android:name="android.intent.category.DEFAULT" /><data android:mimeType="image/*" /></intent-filter><!-- 處理多張圖片的Intent --><intent-filter><action android:name="android.intent.action.SEND_MULTIPLE" /><category android:name="android.intent.category.DEFAULT" /><data android:mimeType="image/*" /></intent-filter></activity></application </manifest>

當一個應用程序構建上面那樣子的Intent,并吧它傳遞給StartActivity(),我們的應用程序就會被列在Intent選擇器中,當用戶選擇該應用程序就進入相對應的Activity(上面的例子是MainActivity),我們只需要在MainActivity處理這樣內容并用相對應的UI顯示,?MainActivity如下

?

?

package com.example.sharedcontext;import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList;import android.app.Activity; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageView; import android.widget.TextView;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Intent intent = getIntent();//獲得Intent的ActionString action = intent.getAction();//獲得Intent的MIME typeString type = intent.getType();if(Intent.ACTION_SEND.equals(action) && type != null){//我們這里處理所有的文本類型if(type.startsWith("text/")){//處理獲取到的文本,這里我們用TextView顯示handleSendText(intent);}//圖片的MIME type有 image/png , image/jepg, image/gif 等,else if(type.startsWith("image/")){//處理獲取到圖片,我們用ImageView顯示handleSendImage(intent);}}else if(Intent.ACTION_SEND_MULTIPLE.equals(action) && type != null){if (type.startsWith("image/")) {//處理多張圖片,我們用一個GridView來顯示handleSendMultipleImages(intent); }}}/*** 用TextView顯示文本* 可以打開一般的文本文件* @param intent*/private void handleSendText(Intent intent){TextView textView = new TextView(this);//一般的文本處理,我們直接顯示字符串String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT);if(sharedText != null){textView.setText(sharedText);}//文本文件處理,從Uri中獲取輸入流,然后將輸入流轉換成字符串Uri textUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);if(textUri != null){try {InputStream inputStream = this.getContentResolver().openInputStream(textUri);textView.setText(inputStream2Byte(inputStream));} catch (Exception e) {e.printStackTrace();}}//設置給ActivitysetContentView(textView);}/*** 將輸入流轉換成字符串* @param inputStream* @return* @throws IOException*/private String inputStream2Byte(InputStream inputStream) throws IOException{ByteArrayOutputStream bos = new ByteArrayOutputStream();byte [] buffer = new byte[1024];int len = -1;while((len = inputStream.read(buffer)) != -1){bos.write(buffer, 0, len);}bos.close();//指定編碼格式為UIT-8return new String(bos.toByteArray(), "UTF-8");}/*** 用ImageView顯示單張圖片* @param intent*/private void handleSendImage(Intent intent) {Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);if (imageUri != null) {ImageView imageView = new ImageView(this);imageView.setImageURI(imageUri);setContentView(imageView);}}/*** 用GridView顯示多張圖片* @param intent*/private void handleSendMultipleImages(Intent intent) {final ArrayList<Uri> imageUris = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);if (imageUris != null) {GridView gridView = new GridView(this);//設置item的寬度gridView.setColumnWidth(130);//設置列為自動適應gridView.setNumColumns(GridView.AUTO_FIT);gridView.setAdapter(new GridAdapter(this, imageUris));setContentView(gridView);gridView.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,final int position, long id) {//點擊GridView的item 可以分享圖片給其他應用//這里可以參考http://blog.csdn.net/xiaanming/article/details/9395991Intent intent = new Intent();intent.setAction(Intent.ACTION_SEND);intent.putExtra(Intent.EXTRA_STREAM, imageUris.get(position));intent.setType("image/*");startActivity(Intent.createChooser(intent, "共享圖片"));}});}}/*** 重寫B(tài)aseAdapter* @author xiaanming**/public class GridAdapter extends BaseAdapter{private Context mContext;private ArrayList<Uri> list;public GridAdapter(Context mContext, ArrayList<Uri> list){this.list = list;this.mContext = mContext;}@Overridepublic int getCount() {return list.size();}@Overridepublic Object getItem(int position) {return list.get(position);}@Overridepublic long getItemId(int position) {return position;}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {ImageView imageView;if(convertView == null){imageView = new ImageView(mContext);imageView.setPadding(8, 8, 8, 8);}else{imageView = (ImageView) convertView;}imageView.setImageURI(list.get(position));return imageView;}} }

?

運行程序之后,然后我們選擇系統(tǒng)圖庫,選擇多張圖片(如圖一)進行分享,我們自己的應用程序分享多張界面(如圖二)點擊我們應用程序的item,選擇分享單張圖片(如圖三)我們繼續(xù)選擇我們自己的應用程序來顯示(如圖四),新建一個備忘錄保存,長按備忘錄進行分享(如圖五),分享文本文件的顯示界面(如圖六)





內容大概就是這樣,睡覺去了如果你覺得這篇文章對你有點幫助,你就幫我頂頂,謝謝大家關注!


?

轉載于:https://www.cnblogs.com/xinyuyuanm/p/3211844.html

總結

以上是生活随笔為你收集整理的Android 应用程序之间内容分享详解(二)的全部內容,希望文章能夠幫你解決所遇到的問題。

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