检查我的代码,这段代码在我的适配器中。但事情是我的手机完全支持应用程序和共享,但较低版本的手机不支持它在点击共享时被迫关闭。
share.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String shareBody = "\t\t DIL KI BAAT \n\n" +sayari[position].toString().trim()+"\n\n\n"+ "https://play.google.com/store/apps/details?id="
+ appPackageName;
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
sharingIntent.setType("text/plain");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
context.startActivity(Intent.createChooser(sharingIntent, context.getResources()
.getString(R.string.app_name)));
}
});
答案 0 :(得分:3)
在调用startActivity之前执行此操作
sharingIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
。如果您不使用活动上下文,则需要这样做。
答案 1 :(得分:1)
您需要为共享意图添加此标志,但对于意图,您将开始使用以下活动:
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
sharingIntent.setType("text/plain");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
Intent startIntent = Intent.createChooser(sharingIntent, context.getResources().getString(R.string.app_name));
startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(startIntent);
答案 2 :(得分:1)
摆脱此问题的最佳方法是从适配器父活动启动活动。使用上下文对象或使用接口,将它们作为参数传递给适配器的构造函数。使用传递的引用调用活动中的方法。这是一个例子:
创建一个界面:
public interface ActivityInteractor{
public void showDetails();
}
让你的活动改变它:
public class MyActivity extends Activity implements ActivityInteractor{
public void showDetails(){
//do stuff
}
}
然后将您的活动传递给ListAdater:
public MyAdapter扩展BaseAdater { 私有ActivityInteractor侦听器;
public MyAdapter(ActivityInteractor listener){
this.listener = listener;
}
} 在适配器的某个地方,当你需要调用那个Activity方法时:
listener.showDetails();