日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

android intent 分发,Android分享操作

發布時間:2024/9/30 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android intent 分发,Android分享操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

現在用的比較多的都是三方的分享,其實安卓自帶的就有簡單的分享。

在構建Intent時,可以指定這個Intent需要觸發的actions。比如ACTION_SEND,該action表明該intent用于從一個activity發送數據到另外一個activity的,甚至可以跨進程之間的數據發送。系統會自動識別出能夠兼容接受的這些數據的activity。如果這些選擇有多個,則把這些activity顯示給用戶進行選擇;如果只有一個,則立即啟動該Activity。

分享數據

分享簡單的數據

Intent sendIntent = new Intent();

sendIntent.setAction(Intent.ACTION_SEND);

sendIntent.putExtra(Intent.EXTRA_TEXT,"This is my text to send");

sendIntent.setType("text/plain");

startActivity(sendIntent);

在不同的程序之間使用intent收發數據是在社交分享內容時最常用的方法。

若有多個匹配的程序,則系統會把他們都給篩選出來,并呈現Dialog給用戶進行選擇。

如果設備上安裝有某個能夠匹配ACTION_SEND且MIME類型為text/plain的程序,則Android系統會立即執行它。

不過為intent調用了Intent.createChooser(),那么Android總是會顯示可供選擇:

startActivity(Intent.createChooser(sendIntent,getResources().getText(R.string.send_to)));

看下顯示效果:

image.png

image.png

image.png

分享圖片

如果想要分享圖片不是文字的話,首先得將setType設置成“image/jpeg”,如果不確定圖片類型直接使用"image/*,同時數據需要結合設置特定的MIME類型,EXTRA_STREAM里面放置數據的URI。

Intent sendIntent = new Intent();

sendIntent.setAction(Intent.ACTION_SEND);

sendIntent.putExtra(Intent.EXTRA_STREAM, mCroppedImageFile.getPath());

sendIntent.setType("image/");

startActivity(Intent.createChooser(sendIntent, "分享"));

image.png

image.png

image.png

分享多種類型數據

如果分享3張JPEG的圖片,那么MIME類型仍然是image/jpeg。如果是不同圖片格式的話,應該是用image/來匹配那些可以接收任何圖片類型的activity。如果需要分享多種不同類型的數據,可以使用/*來表示MIME。

一次分享多張圖片

ArrayList imageUris = new ArrayList<>();

imageUris.add(Uri.fromFile(mCroppedImageFile));

imageUris.add(Uri.fromFile(mCroppedImageFile));

Intent sendIntent = new Intent();

sendIntent.setAction(Intent.ACTION_SEND_MULTIPLE);

sendIntent.putExtra(Intent.EXTRA_STREAM, imageUris);

sendIntent.setType("image/*");

startActivity(Intent.createChooser(sendIntent, "分享"));

可以看到同時分發了2張圖片:

image.png

接收從其他App傳送來的數據

讓自己的app可以接受數據

Intent filters告訴Android系統一個程序愿意接受的數據類型。

android:name=".MainActivity"

android:theme="@style/CustomActionBarTheme">

上面將當前app的MainActivity可以接受文字。然后我們用另外一個app來分享文字:

image.png

上圖中的TraningApp就是我自己定義能接受文字分享的app

處理接受到的數據

為了處理從Intent帶來的數據,可以通過調用getIntent()方法來獲取到Intent對象。拿到這個對象后,我們可以對其中面的數據進行判斷,從而決定下一步行為。

Intent intent = getIntent();

String action = intent.getAction();

String type = intent.getType();

if (Intent.ACTION_SEND.equals(action)){

if ("text/plain".equals(type)){

Log.e(TAG, "ACTION_SEND:"+intent.getStringExtra(Intent.EXTRA_TEXT) );

}

}

然后發送消息:

Intent sendIntent = new Intent();

sendIntent.setAction(Intent.ACTION_SEND);

sendIntent.putExtra(Intent.EXTRA_TEXT, "測試文字");

sendIntent.setType("text/plain");

startActivity(Intent.createChooser(sendIntent, "分享"));

查看log日志:

07-26 12:32:51.315 9746-9746/com.example.frc.trainingapp E/MainActivity: ACTION_SEND:測試文字

同樣我們可以添加圖片的處理:

if (Intent.ACTION_SEND.equals(action)) {

if ("text/plain".equals(type)) {

Log.e(TAG, "ACTION_SEND:" + intent.getStringExtra(Intent.EXTRA_TEXT));

} else if ("image/*".equals(type)) {

Uri uri = intent.getParcelableExtra(Intent.EXTRA_STREAM);

Log.e(TAG, "ACTION_SEND_URI:"+uri.toString());

}

}

查看Log日志:

07-26 14:09:37.135 30944-30944/com.yanxiu.yxsanke_android E/SK::: /storage/emulated/0/YXSanKe_Android/res/nnnn.jpg

note:需要注意的是處理發送過來的數據可能會是耗時操作,建議不要在UI線程進行

總結

以上是生活随笔為你收集整理的android intent 分发,Android分享操作的全部內容,希望文章能夠幫你解決所遇到的問題。

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