2013-03-16 28 views
0

爲了試圖從我的後臺服務(相同包)中找到啓動活動的方法,我停留在10級API或更低級別(嘗試在2.3.3中)不斷抱怨權限爲系統權限的STATUS_BAR。從API服務啓動活動級別<10

我嘗試了各種方法,但沒有成功。

清單中的活動定義:

<activity 
     android:name="com.company.app.ui.ViewActivity" 
     android:label="@string/title_activity" 
     android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 
     android:screenOrientation="portrait" 
     android:launchMode="singleInstance" 
     android:stateNotNeeded="true" 
     android:exported="true"> 

     <intent-filter> 
      <action android:name="com.company.app.action.START_VIEW" /> 
      <data android:scheme="package" android:pathPattern="com.company.app"/> 
     </intent-filter> 
</activity> 

代碼:

Intent it = new Intent("com.company.app.action.START_VIEW"); 
it.setComponent(new ComponentName(getPackageName(), ViewActivity.class.getName())); 
it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
getApplicationContext().startActivity(it); 

備選:

Intent intent = new Intent(this, ViewActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
intent.setAction(Intent.ACTION_VIEW); 
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
startActivity(intent); 

都失敗與例外:

03-16 14:10:07.583: E/MyApp(367): java.lang.SecurityException: Permission Denial: starting Intent { act=com.company.app.action.START_DDM flg=0x10000000 cmp=com.company.app/.ViewActivity } from ProcessRecord{43db3d88 367:com.company.app/10029} (pid=367, uid=10029) requires android.permission.STATUS_BAR 
03-16 14:10:07.703: E/MyApp(367): android.os.Parcel.readException(Parcel.java:1218) 
03-16 14:10:07.793: E/MyApp(367): android.os.Parcel.readException(Parcel.java:1206) 
03-16 14:10:07.864: E/MyApp(367): android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1214) 
03-16 14:10:07.944: E/MyApp(367): android.app.Instrumentation.execStartActivity(Instrumentation.java:1373) 
03-16 14:10:08.044: E/MyApp(367): android.app.ApplicationContext.startActivity(ApplicationContext.java:555) 
03-16 14:10:08.174: E/MyApp(367): android.content.ContextWrapper.startActivity(ContextWrapper.java:248) 
03-16 14:10:08.244: E/MyApp(367): com.company.app.service.MyService.showHideView(MyService.java:616) 
03-16 14:10:08.324: E/MyApp(367): com.company.app.service.MyServiceThread$1.handleMessage(MyServiceThread.java:99) 
03-16 14:10:08.394: E/MyApp(367): android.os.Handler.dispatchMessage(Handler.java:99) 
03-16 14:10:08.473: E/MyApp(367): com.company.app.service.MyServiceThread.callShowHideView(MyServiceThread.java:231) 
03-16 14:10:08.563: E/MyApp(367): com.company.app.service.MyServiceThread.run(MyServiceThread.java:205) 

更新:發佈解決方案下面...感謝Android的愚蠢的錯誤消息!

+1

我們真的需要等等等等,以確定您的問題 – Pragnani 2013-03-16 10:26:03

+0

請張貼滿logcat的.. – 2013-03-16 10:28:25

+0

加滿異常跟蹤的要求。謝謝。 – George 2013-03-16 11:53:05

回答

0

掙扎整天之後,找到了解決辦法:

薑餅,刪除

android:stateNotNeeded="true" 
清單中

和它的作品。

:(

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

添加並檢查它。

+1

只有隱含的意圖需要這個,他需要使用明確的意圖。 – StarPinkER 2013-03-16 10:43:29

+1

我曾經有過這種感覺。 – George 2013-03-16 11:57:40