我正在尝试创建一个将成为默认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" />
该应用不会崩溃(但不会出现在可能的SMS默认应用列表中)
答案 0 :(得分:0)
如果您缩小发行版本,则可能是您的应用需要删除某些内容。查看您的gradle文件。具体取决于您的依存关系:
{{1}}
根据您使用的库,通常有几行可以添加到proguard文件中。
答案 1 :(得分:0)
将“意图过滤器”分为两个独立的部分后,问题得到解决
现在活动如下:
<activity
android:name=".activities.MainActivity"
android:exported="true"
android:enabled="true"
android:label="@string/app_title">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
<action android:name="android.intent.action.MAIN" />
<action android:name="android.intent.action.VIEW" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.SEND" />
<action android:name="android.intent.action.SENDTO" />
<data android:scheme="sms" />
<data android:scheme="mms" />
<data android:scheme="smsto" />
<data android:scheme="mmsto"/>
</intent-filter>
</activity>
我不确定为什么会解决