Hi, My application includes ActivityA / ActivityB / Activity C. Activity C is singleTask mode, not exported, no MAIN/LAUNCHER set, Activity C will be started by ActivityB.
Question: Why un-exported ActivityC can be launched by Launcher com.android.launcher which has a common UID=app_25 ? My understanding it should be denied in startActivityLocked() when checking the permission since ActivityC is not exported and the aInfo.application.uid will be required to start ActivityC. What's wrong in my thought? 1960 final int perm = mService.checkComponentPermission(aInfo.permission, callingPid, 1961 callingUid, aInfo.exported ? -1 : aInfo.applicationInfo.uid); Test steps: S1. Launch my app in AppTray. S2. Press HomeKey to return to home screen. S3. Hold HomeKey to display all Recent launched app, my app can be launched successfully ( intent cmp=com.example.android.recents/.ActivityB) S4. Press Back key to return to home screen. S5. Hold HomeKey to display all Recent launched app, my app can be launched successfully (intent cmp=com.example.android.recents/.ActivityC) Code: The AndroidManifest.xml is as below: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.recents" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/ app_name"> <activity android:name=".ActivityA" /> <activity android:name="ActivityC" android:launchMode="singleTask" / > <activity-alias android:name=".ActivityB" android:targetActivity=".ActivityA"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity-alias> </application> <uses-sdk android:minSdkVersion="6" /> </manifest> ActivityA.java is: public class ActivityA extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); startActivity(new Intent(this, ActivityC.class)); finish(); } } Log: app_25 128 32 146840 19264 ffffffff afd0eb08 S com.android.launcher D:\test>adb logcat -v threadtime 05-24 16:34:27.065 58 191 I ActivityManager: Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.android.recents/.ActivityB } 05-24 16:34:27.234 58 62 I ActivityManager: Start proc com.example.android.recents for activity com.example.android.recents/.ActivityB: pid=271 uid=10038 gids={} 05-24 16:34:28.753 58 191 I ActivityManager: Starting activity: Intent { cmp=com.example.android.recents/.ActivityC } 05-24 16:34:29.174 58 88 I ActivityManager: Displayed activity com.example.android.recents/.ActivityC: 399 ms (total 2025 ms) 05-24 16:34:48.244 58 91 I ActivityManager: Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.android.launcher/com.android.launcher2.Launcher } 05-24 16:34:54.963 58 91 I ActivityManager: Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 cmp=com.android.launcher/com.android.launcher2.Launcher } 05-24 16:35:08.734 58 90 I ActivityManager: Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10100000 cmp=com.example.android.recents/.ActivityB } 05-24 16:35:09.055 58 62 I ActivityManager: Starting activity: Intent { cmp=com.example.android.recents/.ActivityC } 05-24 16:35:09.064 58 116 W ActivityManager: Duplicate finish request for HistoryRecord{450a6ed8 com.example.android.recents/.ActivityB} 05-24 16:35:32.916 58 90 I ActivityManager: Starting activity: Intent { flg=0x10100000 cmp=com.example.android.recents/.ActivityC } <<<<???? why is this successfull ? 05-24 16:35:33.774 58 88 I ActivityManager: Displayed activity com.example.android.recents/.ActivityC: 828 ms (total 24876 ms) -- You received this message because you are subscribed to the Google Groups "Android Discuss" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/android-discuss?hl=en.
