zoukankan      html  css  js  c++  java
  • Android应用程序之间共享文字和图片(一)

    以下为TestReceiveShare1工程

    MainActivity如下:

    package cn.testreceiveshare1;
    import java.util.ArrayList;
    import android.net.Uri;
    import android.os.Bundle;
    import android.widget.ImageView;
    import android.widget.TextView;
    import android.app.Activity;
    import android.content.Intent;
    /**
     * Demo描述:
     * 非系统自带Android应用之间传递文字和图片
     * 即在两个自写的应用之间传递文字和图片
     * 
     * 注意事项:
     * 先部署TestReceiveShare1工程
     * 再部署TestShare1工程
     * 
     * 参考资料:
     * http://blog.csdn.net/xiaanming/article/details/9428613
     */
    public class MainActivity extends Activity {
    	private TextView mTextView;
    	private ImageView mFirstImageView;
    	private ImageView mSecondImageView;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    		initViews();
    		handleReceivedIntent();
    	}
    	
    	private void initViews(){
    		mTextView=(TextView) findViewById(R.id.textView);
    		mFirstImageView=(ImageView) findViewById(R.id.firstImageView);
    		mSecondImageView=(ImageView) findViewById(R.id.secondImageView);
    	}
    	
    	private void handleReceivedIntent(){
    		Intent intent=this.getIntent();
    		String aciton=intent.getAction();
    		String type=intent.getType();
    		System.out.println("aciton="+aciton+",type="+type);
    		
    		//情况一:欲分享的内容是文字
    		if (aciton!=null&&type!=null&&
    		    Intent.ACTION_SEND.equals(aciton)&&"text/plain".equals(type)) {
    			String content=intent.getStringExtra(Intent.EXTRA_TEXT);
    			System.out.println("content="+content);
    			mTextView.setText(content);
    		}
    		
    		//情况二:欲分享的内容是一张图片
    		if (aciton!=null&&type!=null&&
    		    Intent.ACTION_SEND.equals(aciton)&&"image/jpeg".equals(type)) {
    			Uri pictureUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);
    			if (pictureUri != null) {
    				System.out.println("pictureUri="+pictureUri);
    				mFirstImageView.setImageURI(pictureUri);
    			}  
    		}	
    		
    		//情况三:欲分享的内容是多张图片
    		if (aciton!=null&&type!=null&&
    		    Intent.ACTION_SEND_MULTIPLE.equals(aciton)&&"image/jpeg".equals(type)) {
    			ArrayList<Uri> pictureUrisArrayList = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);  
    			if (pictureUrisArrayList.size()>0) {
    				System.out.println("pictureUrisArrayList.size()="+pictureUrisArrayList.size());
    				mFirstImageView.setImageURI(pictureUrisArrayList.get(0));
    				mSecondImageView.setImageURI(pictureUrisArrayList.get(1));
    			}  
    		}		
    		
    	}
    }
    


     

    main.xml如下:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
         >
    
        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hello_world" 
            android:layout_centerHorizontal="true"
            android:textSize="20sp"
            android:layout_marginTop="50dip"
        />
        
        <ImageView
            android:id="@+id/firstImageView"
            android:layout_width="80dip"
            android:layout_height="80dip"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="150dip"
        />
        
         <ImageView
            android:id="@+id/secondImageView"
            android:layout_width="80dip"
            android:layout_height="80dip"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="290dip"
        />
        
    
    </RelativeLayout>

    AndroidManifest.xml如下:

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="cn.testreceiveshare1"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="8" />
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="cn.testreceiveshare1.MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
                
                 <!-- 处理文字的IntentFilter-->
                <intent-filter>
                    <action android:name="android.intent.action.SEND" />
                    <category android:name="android.intent.category.DEFAULT" />
                    <data android:mimeType="text/*" />
                </intent-filter>
    
                <!-- 处理一张图片的IntentFilter -->
                <intent-filter>
                    <action android:name="android.intent.action.SEND" />
                    <category android:name="android.intent.category.DEFAULT" />
                    <data android:mimeType="image/*" />
                </intent-filter>
    
                <!-- 处理多张图片的IntentFilter -->
                <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>


    以下为TestShare1工程
    MainActivity如下:

    package cn.testshare1;
    import java.io.File;
    import java.util.ArrayList;
    import android.app.Activity;
    import android.content.Intent;
    import android.net.Uri;
    import android.os.Bundle;
    import android.os.Environment;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    /**
     * Demo描述:
     * Android应用程序之间共享文字和图片
     * 
     * 参考资料:
     * http://www.vmeitime.com/post/2012-06-08/40027373105
     */
    public class MainActivity extends Activity {
        private Button mTextButton;
        private Button mPictureButton;
        private Button mPicturesButton;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
    		init();
    	}
        private void init(){
        	mTextButton=(Button) findViewById(R.id.shareTextButton);
        	mTextButton.setOnClickListener(new ClickListenerImpl());
        	mPictureButton=(Button) findViewById(R.id.sharePicButton);
        	mPictureButton.setOnClickListener(new ClickListenerImpl());
        	mPicturesButton=(Button) findViewById(R.id.sharePicsButton);
        	mPicturesButton.setOnClickListener(new ClickListenerImpl());
        }
    
    	private class ClickListenerImpl implements OnClickListener {
    		@Override
    		public void onClick(View view) {
    			switch (view.getId()) {
    			case R.id.shareTextButton:
    				shareText("这是要分享的内容");
    				break;
    			case R.id.sharePicButton:
    				sharePicture();
    				break;
    			case R.id.sharePicsButton:
    				sharePictures();
    				break;
    
    			default:
    				break;
    			}
    
    		}
    
    	}
    	
    	//共享文字
    	private void shareText(String string) {
    		Intent intent = new Intent(Intent.ACTION_SEND);
    		intent.putExtra(Intent.EXTRA_TEXT, string);
    		intent.setType("text/plain");
    		Intent.createChooser(intent,"共享文字");
    		startActivity(intent);
    	}
    	
    	//共享一张图片
    	private void sharePicture(){
    		Intent intent = new Intent();
    		intent.setAction(Intent.ACTION_SEND);
    		File file = new File(Environment.getExternalStorageDirectory()+File.separator+"test1.png");
    		intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
    		intent.setType("image/jpeg");
    		Intent.createChooser(intent, "共享一张图片");
    		startActivity(intent);
    	}
    
    	//共享多张图片
    	private void sharePictures(){
    		ArrayList<Uri> picturesUriArrayList=new ArrayList<Uri>();
    		
    		File pictureFile1=new File
    		(Environment.getExternalStorageDirectory()+File.separator+"test1.png");
    		File pictureFile2=new File
    		(Environment.getExternalStorageDirectory()+File.separator+"test2.png");
    		
    		Uri pictureUri1=Uri.fromFile(pictureFile1);
    		Uri pictureUri2=Uri.fromFile(pictureFile2);
    		
    		//不是很好的方式:
    		//因为某些机型报错
    		//Uri pictureUri1=Uri.parse("file:///mnt/sdcard/test1.png");
    		//Uri pictureUri2=Uri.parse("file:///mnt/sdcard/test2.png");
    		
    		//错误的方式:
    		//Uri pictureUri1=Uri.parse
    		//(Environment.getExternalStorageDirectory()+File.separator+"test1.png");
    		//Uri pictureUri2=Uri.parse
    		//(Environment.getExternalStorageDirectory()+File.separator+"test2.png");
    		
    		picturesUriArrayList.add(pictureUri1);
    		picturesUriArrayList.add(pictureUri2);
    		
    		Intent intent = new Intent();
    		intent.setAction(Intent.ACTION_SEND_MULTIPLE);
    	    intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, picturesUriArrayList); 
    		intent.setType("image/jpeg");
    		Intent.createChooser(intent, "共享多张图片");
    		startActivity(intent);
    	}
    
    }
    


    main.xml如下:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
    
        <Button
            android:id="@+id/shareTextButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="50dip"
            android:text="共享文字" 
         />
        <Button
            android:id="@+id/sharePicButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="150dip"
            android:text="共享一张图片" 
         />
        <Button
            android:id="@+id/sharePicsButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="250dip"
            android:text="共享多张图片" 
         />
    
    </RelativeLayout>


     

  • 相关阅读:
    网络七层参考模型(OSI)
    TCP/IP体系结构
    VC调用外部程序接口
    处事八条
    HFC网络
    sql server 2005中的分区函数用法(partition by 字段) 
    Java实现的几个常用排序算法详细解读
    Java中读取字符文件类FileReader
    如何在Java中进行图片剪裁
    从零开始构建HTML 5 Web页面
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3223725.html
Copyright © 2011-2022 走看看