如今分享應用不少,消耗研發與維護時間,增長項目成本,並且集成分享功能後咱們的應用包會比之前要大幾MB。其實有android的Intent能夠知足分享文字和圖片的需求,並且不增長應用包的大小。java
[java] view plaincopyandroid
/** this
* 判斷是否安裝騰訊、新浪等指定的分享應用 spa
* @param packageName 應用的包名 .net
*/ code
public boolean checkInstallation(String packageName){ orm
try { blog
this.getPackageManager().getPackageInfo(packageName, PackageManager.GET_ACTIVITIES); 圖片
return true; ip
} catch (NameNotFoundException e) {
return false;
}
}
若是沒有安裝指定的應用,下面代碼引導跳轉去Google Play上某個應用的詳細頁面
[java] view plaincopy
Uri uri = Uri.parse("market://details?id=應用包名");
Intent it = new Intent(Intent.ACTION_VIEW,uri);
startActivity(it);
用下面代碼能夠彈出一個分享列表讓用戶選擇須要分享哪些文字內容。若是去調用setPackage方法的註銷就會直接跳轉新浪微博分享文字。
[java] view plaincopy
Intent intent=new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
// intent.setPackage("com.sina.weibo");
intent.putExtra(Intent.EXTRA_SUBJECT, "分享");
intent.putExtra(Intent.EXTRA_TEXT, "你好 ");
intent.putExtra(Intent.EXTRA_TITLE, "我是標題");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(Intent.createChooser(intent, "請選擇"));
分享單張圖片,操做與分享文字相似。
[java] view plaincopy
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("image/*");
Uri uri = Uri.fromFile(getFileStreamPath("shared.png"));
shareIntent.putExtra(Intent.EXTRA_STREAM, uri);
// startActivity(Intent.createChooser(shareIntent, "請選擇"));
用Intent分享多張圖片
[java] view plaincopy
/**
* 分享多張照片
*/
private void sendMultiple(){
Intent intent=new Intent(Intent.ACTION_SEND_MULTIPLE);
intent.setType("image/*");
intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, getUriListForImages());
intent.putExtra(Intent.EXTRA_SUBJECT, "分享");
intent.putExtra(Intent.EXTRA_TEXT, "你好 ");
intent.putExtra(Intent.EXTRA_TITLE, "我是標題");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(Intent.createChooser(intent, "請選擇"));
}
/**
* 設置須要分享的照片放入Uri類型的集合裏
*/
private ArrayList<Uri> getUriListForImages() {
ArrayList<Uri> myList = new ArrayList<Uri>();
String imageDirectoryPath = Environment.getExternalStorageDirectory().getAbsolutePath()+ "/DCIM/100ANDRO/";
File imageDirectory = new File(imageDirectoryPath);
String[] fileList = imageDirectory.list();
if(fileList.length != 0) {
for(int i=0; i<5; i++){
try{
ContentValues values = new ContentValues(7);
values.put(Images.Media.TITLE, fileList[i]);
values.put(Images.Media.DISPLAY_NAME, fileList[i]);
values.put(Images.Media.DATE_TAKEN, new Date().getTime());
values.put(Images.Media.MIME_TYPE, "image/jpeg");
values.put(Images.ImageColumns.BUCKET_ID, imageDirectoryPath.hashCode());
values.put(Images.ImageColumns.BUCKET_DISPLAY_NAME, fileList[i]);
values.put("_data", imageDirectoryPath + fileList[i]);
ContentResolver contentResolver = getApplicationContext().getContentResolver();
Uri uri = contentResolver.insert(Images.Media.EXTERNAL_CONTENT_URI, values);
myList.add(uri);
} catch (Exception e) {
e.printStackTrace();
}
}
}
return myList;
}
做者:黑卡米 原文地址:http://blog.csdn.net/aaren_jiang/article/details/8660538