Android 分享功能的實現(xiàn)代碼
更新時間:2017年03月25日 09:13:53 投稿:lqh
這篇文章主要介紹了Android 分享功能的實現(xiàn)代碼的相關資料,需要的朋友可以參考下
Android 分享功能的實現(xiàn)代碼
一個Activity中,取出設備上安裝的所有支持分享動作的Activity,在grid中顯示。
實例代碼:
/** * 分享activity */ public class NShareActivity extends AppCompatActivity { public final static String EXTRA_STR_TO_SHARE="str_to_share1"; private class SharedPkgInfo{ String pkgName; Drawable icon; String appName; String activityClassName; } class Vh extends RecyclerView.ViewHolder { TextView tv; ImageView iv; public Vh(View itemView) { super(itemView); itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //點擊了某個app的圖標,用選擇的app分享內容 Intent share = new Intent(android.content.Intent.ACTION_SEND); share.setType("text/*"); share.putExtra(Intent.EXTRA_SUBJECT, "分享"); share.putExtra(Intent.EXTRA_TEXT,NShareActivity.this.strToShare); //share.putExtra(Intent.EXTRA_STREAM, uri); // Optional, just if you wanna share an image. SharedPkgInfo pi = sharePkgInfo.get(getAdapterPosition()); share.setClassName(pi.pkgName,pi.activityClassName); //share.setPackage(); startActivity(share); } }); } } //獲取支持供享的包的信息 List<SharedPkgInfo> sharePkgInfo=new ArrayList<>(); //要分享出去的文本放在這里 private String strToShare=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent= this.getIntent(); strToShare = intent.getStringExtra(EXTRA_STR_TO_SHARE); getAllSharePackages(); //將可共享的app圖標都放在一個gridview中 RecyclerView v=new RecyclerView(this); v.setPadding(16,16,16,16); GridLayoutManager lm=new GridLayoutManager(this,4); v.setLayoutManager(lm); v.setAdapter(new RecyclerView.Adapter<Vh>() { @Override public Vh onCreateViewHolder(ViewGroup parent, int viewType) { //必須創(chuàng)建新的view holder LinearLayout v=new LinearLayout(NShareActivity.this); v.setPadding(8,8,8,8); Vh vh=new Vh(v); //先創(chuàng)建item view:上面一個圖標,下面一個文本 LinearLayout.LayoutParams lp=new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); v.setOrientation(LinearLayout.VERTICAL); v.setLayoutParams(lp); ImageView imgv=new ImageView(NShareActivity.this); imgv.setLayoutParams(new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, 120)); TextView tv=new TextView(NShareActivity.this); tv.setGravity(Gravity.CENTER); v.addView(imgv); v.addView(tv); vh.tv=tv; vh.iv=imgv; return vh; } @Override public void onBindViewHolder(Vh holder, int position) { //將視圖與數(shù)據(jù)綁定 SharedPkgInfo spi=sharePkgInfo.get(position); holder.tv.setText(spi.appName); holder.iv.setImageDrawable(spi.icon); } @Override public int getItemCount() { return sharePkgInfo.size(); } }); v.setBackgroundColor(Color.WHITE); this.setContentView(v); } //獲取所有支持send Action的包名和圖片 void getAllSharePackages() { Intent share = new Intent(android.content.Intent.ACTION_SEND); //分析網站地址的話用這個: //intent.setType("text/plain"); //純文本 share.setType("text/*"); // gets the list of intents that can be loaded. List<ResolveInfo> resInfo = getPackageManager().queryIntentActivities(share, 0); if (!resInfo.isEmpty()) { for (ResolveInfo info : resInfo) { SharedPkgInfo spi = new SharedPkgInfo(); spi.pkgName = info.activityInfo.packageName; spi.icon = info.loadIcon(getPackageManager()); spi.appName = info.loadLabel(getPackageManager()).toString(); spi.activityClassName=info.activityInfo.name; sharePkgInfo.add(spi); //Log.w("shared",spi.pkgName+" , "+spi.appName+","+info.activityInfo.name); } } } }
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關文章
Android開發(fā)EditText實現(xiàn)密碼顯示隱藏
這篇文章主要為大家詳細介紹了Android開發(fā)EditText實現(xiàn)密碼顯示隱藏,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-08-08Android開發(fā)使用ProgressBar實現(xiàn)進度條功能示例
這篇文章主要介紹了Android開發(fā)使用ProgressBar實現(xiàn)進度條功能,結合實例形式分析了Android進度條ProgressBar的具體樣式、布局與功能實現(xiàn)技巧,需要的朋友可以參考下2019-03-03詳解Android中用于線程處理的AsyncTask類的用法及源碼
這篇文章主要介紹了Android中用于線程處理的AsyncTask類的用法及源碼,講到了實現(xiàn)AsyncTask中所用到的Handler及線程池等要點,需要的朋友可以參考下2016-05-05