【问题标题】:No actions in intent filter, trying to install app意图过滤器中没有任何操作,尝试安装应用程序
【发布时间】:2014-12-25 02:23:09
【问题描述】:

我创建了一个使用PackageManager 来安装下载的APK 文件的类。但是当我尝试安装一个时,我在logcat 中收到以下消息:

12-25 03:11:32.014: W/PackageParser(11192): No actions in intent filter at /storage/emulated/0/download/test/test.apk Binary XML file line #22

我使用以下代码安装应用程序:

case R.id.view_application_install: {
            final File apk = Util.getApk(downloadedItem.getDirectory());
            final Intent intent = new Intent();
            intent.setAction(Intent.ACTION_VIEW);
            intent.setDataAndType(Uri.fromFile(apk), "application/vnd.android.package-archive");
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
        }

这是清单的一部分:

<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="org.catares.android"
android:versionName="@string/app_version"
android:versionCode="9">
<uses-sdk 
    android:minSdkVersion="4"
    android:targetSdkVersion="21" />

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RAISED_THREAD_PRIORITY" />

<application
    android:icon="@drawable/icon"
    android:label="@string/app_name">       
    <activity
        android:configChanges="keyboard|keyboardHidden|orientation"
        android:name=".Main"
        android:launchMode="singleTop">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".application.ApplicationActivity" 
        android:configChanges="keyboard|keyboardHidden|orientation"              
        android:exported="false">
        <intent-filter>
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    <activity
        android:name=".application.ImageViewActivity" 
        android:configChanges="keyboard|keyboardHidden|orientation"              
        android:exported="false">
        <intent-filter>
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    <activity
        android:name=".categories.CategoriesActivity" 
        android:configChanges="keyboard|keyboardHidden|orientation"              
        android:exported="false">
        <intent-filter>
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    <activity
        android:configChanges="keyboard|keyboardHidden|orientation"
        android:name=".forum.ViewForumActivity"
        android:exported="false" >
        <intent-filter>
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>     
    <activity
        android:name=".latest.LatestReleasesActivity" 
        android:configChanges="keyboard|keyboardHidden|orientation"              
        android:exported="false">
        <intent-filter>
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    <activity
        android:name=".myapplications.MyApplicationsActivity" 
        android:configChanges="keyboard|keyboardHidden|orientation"              
        android:exported="false">
        <intent-filter>
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    <activity
        android:name=".myapplications.ViewApplicationActivity" 
        android:configChanges="keyboard|keyboardHidden|orientation"              
        android:exported="false">
        <intent-filter>
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    <activity
        android:name=".myapplications.installed.UpdateSearchResultActivity" 
        android:configChanges="keyboard|keyboardHidden|orientation"              
        android:exported="false">
        <intent-filter>
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    <activity 
        android:name=".search.SearchActivity"
        android:configChanges="keyboard|keyboardHidden|orientation"
        android:exported="false" >
        <intent-filter>
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    <activity
        android:name=".application.replies.RepliesActivity"
        android:configChanges="keyboard|keyboardHidden|orientation"         
        android:exported="false" >
        <intent-filter>
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    <activity
        android:name=".settings.SettingsActivity"
        android:configChanges="keyboard|keyboardHidden|orientation"
        android:exported="false" >
        <intent-filter>
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    <activity
        android:name=".downloads.DownloadsActivity"
        android:configChanges="keyboard|keyboardHidden|orientation"
        android:exported="false" >
        <intent-filter>
            <category android:name="android.intent.category.DEFAULT"/>
        </intent-filter>
    </activity>
    <service android:name=".common.UpdaterService"/>
    <service android:name=".common.downloads.DownloaderService"/>
</application>  
</manifest>

logcat 中显示错误的第 22 行是:

<action android:name="android.intent.action.MAIN" />

【问题讨论】:

  • 您需要将android:name="Main" 更改为“.Main”或完全限定的包名。
  • @David Wasser 我这样做并进行了编辑,但仍然无法正常工作。我感觉我忘记了什么。
  • 此版本的清单 sn-p 格式错误(例如,额外的 &lt;activity) - 这真的是您的 test.apk 中的版本吗?
  • @laalto 我现在提供了完整的清单,请参阅编辑。

标签: android android-intent android-install-apk


【解决方案1】:

您必须在所有意图过滤器中包含操作标签。 下面是一个例子:

<intent-filter>
        <action android:name="android.intent.action.SEND"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:mimeType="text/plain"/>
    </intent-filter>

您只是定义了意图过滤器的类别,而没有定义该 Activity 将处理的操作。

【讨论】:

  • 谢谢我的代码(提到)位于 android:name=".myapplications.ViewApplicationActivity" 类中。你能举个例子清单应该是什么样子吗?有点迷失在这里,也没有显示.apk的图标。再次感谢。
猜你喜欢
  • 2020-05-31
  • 2020-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-05
  • 1970-01-01
  • 1970-01-01
  • 2016-07-31
相关资源
最近更新 更多