アンドロイドのアプリ開発で、外部アプリのActivityを起動しようとしたらSecurityExceptionエラーが出て難儀しやした。
で、何度もやりそうなので対処をメモっておきます。
こんなエラーメッセージ
SecurityException: Permission Denial:.....requires null......
やろうとしたこと
あるアプリから、外部アプリのメインじゃなくサブのActivityを開こうという意図。
例えば、com.example.myapp.SubActivityを開きたい...として。
開く側のコード
// インテントのインスタンス生成
Intent intent_sub = new Intent();
// パッケージ名, クラス名をセット
intent_sub.setClassName("com.example.myapp", "com.example.myapp.SubActivity");
// アプリを起動
startActivity(intent_sub);
開かれる側の設定
AndroidManifest.xmlのactivityに以下のように記述しておきます。
メインのActivity
<activity
android:name="com.example.myapp.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
サブのActivity
<activity
android:name="com.example.myapp.SubActivity"
android:label="@string/app_name" >
<!-- 以下のfilterは他アプリからのstartActivityに対応するためのもの -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
これで、OKです。