首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法通过使用包名启动活动

无法通过使用包名启动活动
EN

Stack Overflow用户
提问于 2017-10-31 13:20:26
回答 1查看 1.2K关注 0票数 3

我试图使用一个库,其中我必须传递操作和URI,并打开活动,我必须使用包名,但问题是,即使我更改了包名,它根本不起作用,这是我正在尝试的代码。

代码语言:javascript
复制
 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);

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

代码语言:javascript
复制
 <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传递操作,这是我能看到和指导的唯一可能的方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-02 09:59:15

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

代码语言:javascript
复制
intent.setClassName("neelay.mediaplayer.beatbox.ringdroid", "neelay.mediaplayer.beatbox.ringdroid.RingdroidEditActivity");

对此:

代码语言:javascript
复制
intent.setClassName("neelay.mediaplayer.beatbox", "neelay.mediaplayer.beatbox.ringdroid.RingdroidEditActivity");

由于设置Component的方法有很多种,所以也可以使用以下任何方法:

代码语言:javascript
复制
intent.setClassName(this, "neelay.mediaplayer.beatbox.ringdroid.RingdroidEditActivity");

或者像这样:

代码语言:javascript
复制
intent.setClassName(getApplicationContext(), "neelay.mediaplayer.beatbox.ringdroid.RingdroidEditActivity");

或者像这样:

代码语言:javascript
复制
intent.setComponent(new ComponentName("neelay.mediaplayer.beatbox", "neelay.mediaplayer.beatbox.ringdroid.RingdroidEditActivity"));

或者像这样:

代码语言:javascript
复制
intent.setComponent(new ComponentName(this, "neelay.mediaplayer.beatbox.ringdroid.RingdroidEditActivity"));

或者像这样:

代码语言:javascript
复制
intent.setComponent(new ComponentName(getApplicationContext(), "neelay.mediaplayer.beatbox.ringdroid.RingdroidEditActivity"));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47036496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档