1

AIR Native Extensionから最初のアクティビティを正常に呼び出していますが、2番目のアクティビティを呼び出そうとすると、Permission Denialエラーが発生します(logcatスクリーンショットを参照)。私はこのサイトで提案されたものをすべて試したので、質問を投稿します。

02-12 15:43:22.430: I/ActivityManager(271): START {act=android.intent.action.RUN cmp=com.cno.android.map/.AddMarkerActivity (has extras) u=0} from pid 14173
02-12 15:43:22.440: W/ActivityManager(271): Permission Denial: starting Intent { act=android.intent.action.RUN cmp=com.cno.android.map/.AddMarkerActivity (has extras) } from ProcessRecord{4147a718 14173:air.TestAndroidExtension.debug/u0a75} (pid=14173, uid=10075) not exported from uid 10072

これが私のマニフェストです:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.cno.android.map"
android:versionCode="1"
android:versionName="1.0" >

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

<!-- Maps API needs OpenGL ES 2.0. -->
<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />
<!-- End of copy. -->

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.Black.NoTitleBar" >
    <meta-data
        android:name="com.google.android.maps.v2.API_KEY"
        android:value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" />

    <activity
        android:name="com.cno.android.map.InitMapActivity"
        android:label="@string/title_activity_init_map" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name="com.cno.android.map.AddMarkerActivity"
        android:exported="true" >
        <intent-filter>
            <action android:name="android.intent.action.RUN"/>
        </intent-filter>
    </activity>
</application>

注意事項:私は最初に、インテントフィルターを定義せずにAddMarkerActivityを試しました。運がなかったので、RUNアクションの実験を始めました。onCreateメソッドで「HELLO」と表示される1つのlogcatメッセージを除いて、AddMarkerActivityですべてをコメントアウトしました。ご覧のとおり、私のアクティビティはマニフェストで複製されておらず、エクスポートはtrueに設定されています。

そして最後に、これが私がアクティビティと呼んでいる方法です:

public class AddAnnotationFunction implements FREFunction {

public static final String TAG = "AddAnnotationFunction";
public final static String EXTRA_MARKER = "com.cno.nativemap.functions.marker";

@Override
public FREObject call(FREContext context, FREObject[] args) {

    Intent intent = new Intent();
    intent.setClassName("com.cno.android.map", "com.cno.android.map.AddMarkerActivity");
    Log.d(TAG, "Starting Map Activity- add marker");
    intent.setAction("android.intent.action.RUN");
    intent.putExtra(EXTRA_MARKER, new GeoMarker(args));

    context.getActivity().startActivity(intent);
    return null;
}

}

4

0 に答える 0