0

バックグラウンドサービス(同じパッケージ)からアクティビティを開始する方法を見つけようとして、レベル10 API以下(2.3.3で試行)でスタックし、システムパーミッションであるパー​​ミッションSTATUS_BARに対して文句を言い続けます。

いろいろな方法を試しましたが、うまくいきませんでした。

マニフェストのアクティビティ定義:

<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に感謝します!

4

2 に答える 2

0

これに一日中苦労した後、解決策を見つけました:

ジンジャーブレッド、取り除く

android:stateNotNeeded="true" 

マニフェストで動作します。

:(

于 2013-03-16T17:11:29.447 に答える
0
 <category android:name="android.intent.category.DEFAULT" />

これを追加して確認します。

于 2013-03-16T10:39:04.263 に答える