添加:动作android:name =“ android.intent.action.SEND”到andrid清单会使应用崩溃

时间:2019-04-03 21:53:25

标签: android 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" />

该应用不会崩溃(但不会出现在可能的SMS默认应用列表中)

2 个答案:

答案 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>

我不确定为什么会解决