无法使用程序包名称

时间:2017-10-31 13:20:26

标签: android android-intent android-activity android-manifest

我正在尝试使用一个库,我必须传递操作和URI并打开我必须使用包名称的活动,但事情是我更改了包名称它根本不工作 这是我正在尝试的代码

 Intent intent = new Intent(Intent.ACTION_EDIT, Uri.parse(filename));
        intent.putExtra("was_get_content_intent", mWasGetContentIntent);
        intent.setClassName("neelay.mediaplayer.beatbox.ringdroid", "neelay.mediaplayer.beatbox.ringdroid.RingdroidEditActivity");
        startActivityForResult(intent, REQUEST_CODE_EDIT);

这是我设置活动的清单代码

 <activity
        android:name=".ringdroid.RingdroidSelectActivity"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Holo">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.GET_CONTENT" />

            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.OPENABLE" />

            <data android:mimeType="audio/*" />
        </intent-filter>
    </activity>
    <activity
        android:name=".ringdroid.RingdroidEditActivity"
        android:configChanges="orientation|screenSize|keyboardHidden"
        android:hardwareAccelerated="true"
        android:windowSoftInputMode="adjustResize">
        <intent-filter android:label="@string/edit_intent">
            <action android:name="android.intent.action.EDIT" />

            <data android:mimeType="audio/*" />
        </intent-filter>
    </activity>

包名称为package="neelay.mediaplayer.beatbox" 我知道通过调用活动的名称来打开活动很容易,但在这种情况下,我必须用uri传递动作,这是我能看到的唯一可能的方式,指导会有所帮助。

1 个答案:

答案 0 :(得分:1)

您说您的包名(在清单中)是“neelay.mediaplayer.beatbox”。在这种情况下,您需要更改此:

intent.setClassName("neelay.mediaplayer.beatbox.ringdroid", "neelay.mediaplayer.beatbox.ringdroid.RingdroidEditActivity");

到此:

intent.setClassName("neelay.mediaplayer.beatbox", "neelay.mediaplayer.beatbox.ringdroid.RingdroidEditActivity");

由于有多种方法可以设置Component,您还可以使用以下任何一种方法:

intent.setClassName(this, "neelay.mediaplayer.beatbox.ringdroid.RingdroidEditActivity");

或者像这样:

intent.setClassName(getApplicationContext(), "neelay.mediaplayer.beatbox.ringdroid.RingdroidEditActivity");

或者像这样:

intent.setComponent(new ComponentName("neelay.mediaplayer.beatbox", "neelay.mediaplayer.beatbox.ringdroid.RingdroidEditActivity"));

或者像这样:

intent.setComponent(new ComponentName(this, "neelay.mediaplayer.beatbox.ringdroid.RingdroidEditActivity"));

或者像这样:

intent.setComponent(new ComponentName(getApplicationContext(), "neelay.mediaplayer.beatbox.ringdroid.RingdroidEditActivity"));