在android studio中使用kotlin共享意图文本

我想共享文本在我的CardView使用共享意图使用KOTLIN,但有一个问题,最后一行代码在KOTLIN代码

val shareIntent = Intent() shareIntent.action = Intent.ACTION_SEND shareIntent.putExtra(Intent.EXTRA_STREAM, "ali") shareIntent.type = "text/plain" startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.send_to))) 

这是代码中的问题

 startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.send_to))) 

请帮帮我

看图像来理解我

图片

https://ibb.co/jQwYXw

https://ibb.co/id0tXw

https://ibb.co/fbCU5G

适配器完整的代码

 class MyAdapter(context: Context, listItem: ArrayList) : RecyclerView.Adapter() { var Context = context var movieList = listItem; var layoutInflator = LayoutInflater.from(context) override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): MyViewHolder { var inflateView = layoutInflator.inflate(R.layout.single_item, parent, false) return MyViewHolder(inflateView) } override fun onBindViewHolder(holder: MyViewHolder?, position: Int) { holder?.moviewTitle?.text = movieList[position].name holder?.movieDescription!!.text= movieList[position].description //holder!!.cardImageView!!.background= movieList[position].image holder?.onclick(Context, position) holder!!.cardImageView.setBackgroundResource(movieList[position].image) } override fun getItemCount(): Int { return movieList.size } class MyViewHolder(itemView: View?) : RecyclerView.ViewHolder(itemView) { var moviewTitle: TextView = itemView?.findViewById(R.id.movieTitleTextView)!! var movieDescription: TextView = itemView!!.findViewById(R.id.movieDescriptionTextView) var cardImageView: CardView = itemView!!.findViewById(R.id.imageCard) var share: ImageButton = itemView!!.findViewById(R.id.share) fun onclick(context: Context, position: Int) { cardImageView.setOnClickListener { } share.setOnClickListener { val shareIntent = Intent() shareIntent.action = Intent.ACTION_SEND shareIntent.putExtra(Intent.EXTRA_TEXT, "ali") shareIntent.type = "text/plain" startActivity(Intent.createChooser(shareIntent,"send to")) }} }} 

试试这个: – 只有当你必须发送二进制数据像图像,如果你想发送文本使用Intent.EXTRA_TEXT

  val shareIntent = Intent() shareIntent.action = Intent.ACTION_SEND shareIntent.type="text/plain" shareIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send."); startActivity(Intent.createChooser(shareIntent,getString(R.string.send_to))) 

只是使用

 context.startActivity 

绝望的

 startActivity 

你当然可以去开始活动的定义,并查看重载,因为你没有通过一个可接受的参数。

我喜欢做的,为了有导航代码到处都是创建一个这样的IntentFactory:

 public class IntentFactory { /** * * @param context * @return intent */ public static Intent getLoginIntent(Context context, boolean launchedFromNotification, boolean isApproveNotify, String idOfDetailToOpen, NewsModel notificationModel){ Intent intent = new Intent(context, LoginActivity.class); intent.putExtra(Globals.INTENT_KEYS.KEY_FROM_BADGE_ACCESS, launchedFromNotification); intent.putExtra(Globals.INTENT_KEYS.KEY_ID_OF_DETAIL_TO_OPEN, idOfDetailToOpen); intent.putExtra(Globals.INTENT_KEYS.KEY_IS_APPROVE_NOTIFY, isApproveNotify); intent.putExtra(Globals.INTENT_KEYS.KEY_ALERT_NOTIFICATION_FOR_APPROVAL, notificationModel); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK); return intent; } /** * * @param filePath * @param subject * @param body * @return */ public static Intent getSendImageIntent(String filePath, String subject, String body){ Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("image/jpg"); intent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file://" + filePath)); intent.putExtra(Intent.EXTRA_SUBJECT, subject); intent.putExtra(Intent.EXTRA_TEXT, body); return Intent.createChooser(intent, "Share File"); } /** * * @param toEmailAddresses * @param subject * @param body * @param uris * @return */ public static Intent getEmailIntent(String[] toEmailAddresses, String subject, String body, ArrayList uris) { Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE); intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_EMAIL, toEmailAddresses); intent.putExtra(Intent.EXTRA_SUBJECT, subject); intent.putExtra(Intent.EXTRA_TEXT, body); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); if(uris != null) { intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); } return Intent.createChooser(intent, "Send mail..."); } /** * Used to launch to app details screen for toggling of permissions or other things * @param context * @return */ public static Intent getShowAppDetailSettingsIntent(Context context){ Intent intent = new Intent(); intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS); intent.addCategory(Intent.CATEGORY_DEFAULT); intent.setData(Uri.parse("package:" + context.getPackageName())); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); intent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); return intent; } } 

然后,您可以使用StartActivity调用轻松管理

  String email = SharedPreferencesManager.getInstance(getContext()).getSecuredPreference(REMEMBER_ME_USER_KEY); String subject = getString(R.string.message) + " " + model.getFirstName() + " " + model.getLastName(); String body = getString(R.string.subject) + model.getFirstName() + " " + model.getLastName() + "\n" + model.getShootKeyUrl(); startActivity(IntentFactory.getEmailIntent(new String[]{email}, subject, body, null)); 

所以,如果你调整适当的参数,你会很好,但我仍然建议提取它,以方便更新到像这样的工厂。