首页 > 解决方案 > 添加:action android:name="android.intent.action.SEND" 到 android manifest 使应用程序崩溃

问题描述

我正在尝试创建一个应用程序,它将成为默认的 SMS 应用程序,我遵循了几个指导,告诉我将此块添加到主要活动中:

<intent-filter>             
 <category android:name="android.intent.category.LAUNCHER" />
                 <category android:name="android.intent.category.DEFAULT"/> 
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.intent.action.VIEW" />
                 <action android:name="android.intent.action.SEND" />
                 <action android:name="android.intent.action.SENDTO" />
                 <data android:scheme="sms" />
                 <data android:scheme="smsto" />
                 <data android:scheme="mms" />
                 <data android:scheme="mmsto" />
             </intent-filter>

这很好用(只是更改的一部分),当我从 android studio 调试应用程序时,一切顺利(意味着在我的手机上运行代码但使用 Android studio)

但是,在生成发布应用程序(apk)并将其安装在设备上后,我在打开应用程序时收到此错误

2019-04-04 00:36:35.708 8404-8404/? E/GlobalPackageInstaller: launchApp error:
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Intent.toString()' on a null object reference
        at android.app.Instrumentation.execStartActivity(Instrumentation.java:1581)
        at android.app.Activity.startActivityForResult(Activity.java:4526)
        at android.app.Activity.startActivityForResult(Activity.java:4484)
        at android.app.Activity.startActivity(Activity.java:4845)
        at android.app.Activity.startActivity(Activity.java:4813)
        at com.miui.global.packageinstaller.GlobalPackageInstallerActivity.launchApp(GlobalPackageInstallerActivity.java:306)
        at com.miui.global.packageinstaller.GlobalPackageInstallerActivity.onClick(GlobalPackageInstallerActivity.java:280)
        at android.view.View.performClick(View.java:6266)
        at android.view.View$PerformClick.run(View.java:24730)
        at android.os.Handler.handleCallback(Handler.java:793)
        at android.os.Handler.dispatchMessage(Handler.java:98)
        at android.os.Looper.loop(Looper.java:173)
        at android.app.ActivityThread.main(ActivityThread.java:6698)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:782)

如果我删除这 4 行:

<data android:scheme="sms" />
<data android:scheme="smsto" />
<data android:scheme="mms" />
<data android:scheme="mmsto" />

应用程序不会崩溃(但不会出现在可能的短信默认应用程序列表中)

标签: androidandroid-manifest

解决方案


如果你缩小你的发布变体,可能是你的应用程序需要的一些东西被删除了。查看您的 gradle 文件。特别是在您的家属:

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.constraint:constraint- 
 layout:1.1.3'
implementation 'com.android.support:design:28.0.0'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 
'com.android.support.test.espresso:espresso-core:3.0.2'

根据您使用的库,通常有几行要添加到 proguard 文件中。


推荐阅读