How to start an activity using a custom intent?

2019-07-29 18:09发布

问题:

I have a very simple application (an example from a textbook) that consists of 2 activities: The first activity UsingIntentActivity has a button. When this button is clicked it must lead to the second activity called SecondActivity which will show a text on the screen.

I can achieve this using startActivity(new Intent(this, SecondActivity.class));

However in the textbook where I met this example another form of the same method is used:

startActivity(new Intent("net.dreamingpixel.SecondActivity"));

And in the Manifest File a matching custom intent is created (as I understood):

    <activity
        android:name=".UsingIntentActivity"
        android:label="@string/title_activity_using_intent" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".SecondActivity"
        android:label="Second Activity" >
        <intent-filter>
            <action android:name="net.dreamingpixel.SecondActivity" />

            <categoty android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

So there is an intent-filter and its category is set to DEFAULT. But when I try to run the app like this and click the button of the UsingIntentActivity the app crashes. In the log cat I can see the following messages:

FATAL EXCEPTION: main
java.lang.IllegalStateException: Could not execute the method of the activity

And then it points to the call of the startActivity method that I wrote at the beginning of this post.

Did anyone have a similar problem? Did I make a mistake somewhere?

UPDATE: Also I noticed that there is a warning in the Manifest file on the line where I open the second activity tag. It says: Exported activity does not require permission

Maybe this warning has to do something with my problem..

回答1:

As you send that you have created second activity in manifest file as per

startActivity(new Intent("net.dreamingpixel.SecondActivity"));

Here net.dreamingpixel.SecondActivity means, here you need to provide the activity name with the package you created in your project...

In manifest at the top you will find package name. You need to use that package name with your activity...

Here as per above code..

    net.dreamingpixel ----- is a package
      SecondActivity  ----- is an Activity in that package.