Android 공유 기능 구현 코드
하나의 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) {
// view holder
LinearLayout v=new LinearLayout(NShareActivity.this);
v.setPadding(8,8,8,8);
Vh vh=new Vh(v);
// 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) {
//
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);
}
}
}
}
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.