How to export an activity so other apps can call it?

前端 未结 2 901
时光取名叫无心
时光取名叫无心 2020-12-07 00:47

Well I searched a lot, but I didn\'t find a precise answer how to export an Activity, so an app can start it with startActivityforResult.

How do I achie

相关标签:
2条回答
  • 2020-12-07 01:15

    As an alternate to Dalmas' answer, you can actually export an Activity without creating an <intent-filter> (along with the hassle of coming up with a custom action).

    In the Manifest edit your Activity tag like so:

    <activity
        android:name=".SomeActivity"
        ....
        android:exported="true" />
    

    The important part is android:exported="true", this export tag determines "whether or not the activity can be launched by components of other applications". If your <activity> contains an <intent-filter> then this tag is set to true automatically, if it does not then it is set to false by default.

    Then to launch the Activity do this:

    Intent i = new Intent();
    i.setComponent(new ComponentName("package name", "fully-qualified name of activity"));
    startActivity(i);
    

    Of course with this method you will need to know the exact name of the Activity you are trying to launch.

    0 讨论(0)
  • 2020-12-07 01:34

    You need to declare an intent-filter in your Manifest (I took the following example from Barcode Scanner) :

    <activity android:name="...">
        <intent-filter>
            <action android:name="com.google.zxing.client.android.SCAN" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>
    

    Then create an intent with the same action string :

    Intent intent = new Intent("com.google.zxing.client.android.SCAN");
    startActivityForResult(intent, code);
    

    Android should start your activity (or it will show a drop-down box if there are multiple apps sharing the same action string).

    0 讨论(0)
提交回复
热议问题