java - 尝试使用 Intent 共享文本时出现异常

标签 java android android-intent

我希望用户与其他应用程序分享按摩,因此我执行以下操作:

String shareBody = "content";
Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
sharingIntent.setType("text/plain");
sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
startActivity(Intent.createChooser(sharingIntent, "title"));

问题是我从系统中收到异常,但我不知道我做错了什么:

The Google Play services resources were not found. Check your project 

configuration to ensure that the resources are included.
09-24 14:25:53.618 24079-24079/? E/MotionRecognitionManager: mSContextService = android.hardware.scontext.ISContextService$Stub$Proxy@e2ecc0
09-24 14:25:53.618 24079-24079/? E/MotionRecognitionManager: motionService = com.samsung.android.motion.IMotionRecognitionService$Stub$Proxy@1417df9
09-24 14:25:53.618 24079-24079/? E/MotionRecognitionManager: motionService = com.samsung.android.motion.IMotionRecognitionService$Stub$Proxy@1417df9
09-24 14:25:53.868 24079-24177/? E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #5
                                                   Process: android:ui, PID: 24079
                                                   java.lang.RuntimeException: An error occurred while executing doInBackground()
                                                       at android.os.AsyncTask$3.done(AsyncTask.java:309)
                                                       at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
                                                       at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
                                                       at java.util.concurrent.FutureTask.run(FutureTask.java:242)
                                                       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
                                                       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
                                                       at java.lang.Thread.run(Thread.java:818)
                                                    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int android.graphics.drawable.Drawable.getIntrinsicWidth()' on a null object reference
                                                       at android.app.ApplicationPackageManager.getThemeIconWithBG(ApplicationPackageManager.java:3062)
                                                       at android.app.ApplicationPackageManager.getThemeIconWithBG(ApplicationPackageManager.java:3037)
                                                       at android.app.ApplicationPackageManager.getDrawableForIconTray(ApplicationPackageManager.java:2933)
                                                       at com.android.internal.app.ResolverActivity.loadIconForResolveInfo(ResolverActivity.java:797)
                                                       at com.android.internal.app.ResolverActivity$LoadIconTask.doInBackground(ResolverActivity.java:2471)
                                                       at com.android.internal.app.ResolverActivity$LoadIconTask.doInBackground(ResolverActivity.java:2459)
                                                       at android.os.AsyncTask$2.call(AsyncTask.java:295)
                                                       at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
                                                       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
                                                       at java.lang.Thread.run(Thread.java:818) 

只有当我执行 sharingIntent.setType("text/plain"); 时才会发生这种情况。有谁知道如何解决这个问题吗?

编辑:

String shareBody = "really? I'm sending you a code to our awesome app!\nYour key:"
                                    + " "/* get key*/ + " Get started:" + " https://url";

编辑 2:好吧,显然它只发生在我的三星 Galaxy s7 上,而不是 Pixel 上。我还注意到日志还显示:

    09-24 14:48:44.888 31968-31968/? E/MotionRecognitionManager: mSContextService = android.hardware.scontext.ISContextService$Stub$Proxy@e2ecc0
09-24 14:48:44.888 31968-31968/? E/MotionRecognitionManager: motionService = com.samsung.android.motion.IMotionRecognitionService$Stub$Proxy@1417df9
09-24 14:48:44.888 31968-31968/? E/MotionRecognitionManager: motionService = com.samsung.android.motion.IMotionRecognitionService$Stub$Proxy@1417df9

最佳答案

使用此代码与其他应用共享文本。

private void share() {
    Intent sharingIntent = new Intent(Intent.ACTION_SEND);
    String shareBody ="your message";
    sharingIntent.putExtra(Intent.EXTRA_SUBJECT, "subject");
    sharingIntent.putExtra(Intent.EXTRA_TEXT, shareBody);
    sharingIntent.setType("text/plain");
    startActivity(Intent.createChooser(sharingIntent, "Share via"));
}

关于java - 尝试使用 Intent 共享文本时出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46389612/

相关文章:

java - 调整 JPanel 的大小,以获取在最大化屏幕时使用 GridBagConstraints 的 GridBagLayout

java - 文本超出 JTextArea

android - 在文本和 ImageView 之间放置空格

android - 是否可以以不区分大小写的方式匹配 intent-filter 的 pathPattern?

java - 使用 appium 将元素滚动到 View 中不适用于 iOS

java - 旋转 tiff 图像时出现问题

android - 当设备的(android)键盘处于 Activity 状态时,jquery 移动弹出窗口小部件不会移动

android - 两个模块之间的链接实现

java - 如何从后台以编程方式恢复 Android Activity

android org.xmlpull.v1.xmlpullparserexception expected start_tag http//schemas.xmlsoap.org/soap/envelope/envelope 位置开始标记