国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

簡述Android中實現APP文本內容的分享發送與接收方法

2019-12-12 04:17:26
字體:
來源:轉載
供稿:網友

謹記(指定選擇器Intent.createChooser())

開始今天的內容前,先閑聊一下:

(1)突然有一天頭腦風暴,對很多問題有了新的看法和見解,迫不及待的想要分享給大家,文檔已經寫好了,我需要通過微信或者QQ,短信等社交工具發送給大家。

(2)在網上發現一段特別好的文章,想要保存收藏下來。

上面描述了進入智能手機時代后,我們經常遇到的兩種情況,那么作為開發者的我們如何讓自己開發的APP實現這兩種功能呢,下面我們以實現文本的發送分享以及接收來梳理下兩種功能的實現過程(其他類型的數據在博文末尾會給大家做簡單介紹)。

第一種情況:APP實現發送分享文本功能

在實現APP發送與分享的功能時,根據是否指定選擇器Intent.createChooser(),會有兩種不同的實現效果。

(1)指定選擇器的實現效果如下:

每次需要發送分享的時候,都會彈出所有具有分享功能的APP供選擇。(個人認為很人性化)

(2)未指定選擇器的實現效果如下:

圖中演示測試使用的安卓原生系統,在未設置選擇器的時候,每次會提醒用戶使用當前APP提交發送分享所使用的APP僅使用一次還是始終都使用(經測試萬一大家手滑,誤點了“始終”,那么好吧,如果下次想換其他APP分享內容時,除非你卸載重裝當前APP);但在其他一些安卓定制系統的品牌手機上測試時,發現僅第一次會跳出所有具有發送分享功能的APP供你選擇(但是不會提示你僅使用一次還是始終),一旦選擇后,后果與在原生系統上點擊始終的效果相同。立馬卸載APP的心都有了。

好了,實現效果大家都看到了,我們開始擼一把代碼吧:

第一步:Layout中界面布局文件activity_main.xml文件(文本編輯框以及按鈕):

<?xml version="1.0" encoding="utf-8"?> <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"tools:context="com.example.administrator.sendshare.MainActivity"> <EditText android:id="@+id/et" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="想給潘侯爺說點什么"/> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:onClick="sendtext" android:text="發送文本" /></LinearLayout>

第二步:Java中實現代碼MainActivity.java功能實現代碼:

注意注意:指定選擇器啊

public class MainActivity extends AppCompatActivity { EditText et;//聲明文本編輯框 String str;//聲明字符串,用于獲取文本編輯框內的內容 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //獲取文本框 et = (EditText) findViewById(R.id.et); } //創建方法將輸入的內容發出去 public void sendtext(View view){ str=et.getText().toString(); Intent intent = new Intent(); /*設置action為發送分享, *并判斷要發送分享的內容是否為空  */ intent.setAction(Intent.ACTION_SEND); if(str!=null){  intent.putExtra(Intent.EXTRA_TEXT,str); }else{  intent.putExtra(Intent.EXTRA_TEXT,""); } intent.setType("text/plain");//設置分享發送的數據類型 //未指定選擇器,部分定制系統首次選擇后,后期將無法再次改變// startActivity(intent); //指定選擇器選擇使用有發送文本功能的App startActivity(Intent.createChooser(intent,getResources().getText(R.string.app_name))); }}

第二種情況:APP實現接收分享文本功能

實現效果如下(將短信內容分享到我們的APP上):

layout布局界面為初始默認,僅一個默認helloworld的TextView界面,這里就省略不寫了。

第一步:AndroidMainfest.xml配置文件(添加接收文本所需的action等intent屬性)

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.administrator.test" > <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" >  <intent-filter>  <action android:name="android.intent.action.MAIN" />  //添加接收文本用的action,category,mimeType  <action android:name="android.intent.action.SEND" />  <category android:name="android.intent.category.DEFAULT" />  <data android:mimeType="text/plain" />  <category android:name="android.intent.category.LAUNCHER" />  </intent-filter> </activity> </application></manifest>

第二步:Java中實現代碼MainActivity.java功能實現代碼

import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.TextView;public class MainActivity extends AppCompatActivity { private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv); //獲取intent Intent intent =getIntent(); String action = intent.getAction(); String type = intent.getType(); //設置接收類型為文本 if (Intent.ACTION_SEND.equals(action) && type != null){  if ("text/plain".equals(type)) {  handlerText(intent);  } }}//該方法用于獲取intent所包含的文本信息,并顯示到APP的Activity界面上 private void handlerText(Intent intent) { String data = intent.getStringExtra(Intent.EXTRA_TEXT); tv.setText(data); }}

額外補充:

設置更新桌面背景,核心代碼如下:

import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;public class Main2Activity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); } public void select(View view){ Intent intent = new Intent(); intent.setAction(Intent.ACTION_SET_WALLPAPER); startActivity(Intent.createChooser(intent,getResources().getText(R.string.app_name)));// startActivity(intent); }}

以二進制的形式分享發送圖片,核心代碼如下:

public void sendimage(View view) { Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND); intent.putExtra(Intent.EXTRA_STREAM, Uri.parse(Environment.getExternalStorageDirectory()+"/DCIM/Camera/20161204_195228.jpg")); intent.setType("image/*");// startActivity(intent); startActivity(Intent.createChooser(intent,getResources().getText(R.string.app_name)));}

發送分享多張圖片,核心代碼如下:

public void sendimages(View view) { ArrayList<Uri> uris = new ArrayList<>(); //演示發送兩張圖片 uris.add(Uri.parse(Environment.getExternalStorageDirectory()+"/DCIM/Camera/20161204_195228.jpg")); uris.add(Uri.parse(Environment.getExternalStorageDirectory()+"/DCIM/Camera/20161204_195155.jpg")); Intent intent = new Intent(); intent.setAction(Intent.ACTION_SEND_MULTIPLE); intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM,uris); intent.setType("image/*");// startActivity(intent); startActivity(Intent.createChooser(intent,getResources().getText(R.string.app_name)));}

今天到這了,有問題歡迎評論討論,晚安嘍!

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持武林網!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安国市| 罗江县| 庆阳市| 沛县| 凉山| 新兴县| 蒲江县| 永安市| 阜城县| 沅江市| 肥乡县| 罗田县| 曲麻莱县| 长沙市| 万荣县| 调兵山市| 安乡县| 邯郸县| 平罗县| 建始县| 呈贡县| 靖江市| 江孜县| 玛曲县| 自治县| 辽阳县| 金溪县| 张家界市| 彰武县| 山西省| 高邑县| 商都县| 镇巴县| 新丰县| 兴业县| 班戈县| 和政县| 冕宁县| 湟源县| 五指山市| 文成县|