android - 添加: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" />
应用程序不会崩溃(但不会出现在可能的短信默认应用程序列表中)
解决方案
如果你缩小你的发布变体,可能是你的应用程序需要的一些东西被删除了。查看您的 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 文件中。
推荐阅读
- java - 选择具有与使用 spring jpa 不同的字段的实体
- firebase - 有没有办法阻止华为/小米设备杀死后台服务?使用 HMS 会减少这些问题吗?
- python - 如何找到具有值的元素?
- python - 如何创建在特定时间触发自身的python脚本(Django)?
- django - makemigrations 错误并使用 django 在 pycharm 中迁移
- jquery - jquery单击内容时如何从内容中删除类
- sqlalchemy - 在审计表中添加 JSON 数据
- performance - Elasticsearch 随着大小参数的增加变慢(不依赖于数据大小)
- vowpalwabbit - `vw --audit` 如何在内部计算特征的权重?
- hugo - 如何使用 netlify CMS 在博客部分添加博客文章列表?