1

我从 AIR Native Extension 成功调用了我的第一个 Activity,但是,当我尝试调用第二个时,我收到 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”的一条 logcat 消息外,我已经在 AddMarkerActivity 中注释掉了所有内容。如您所见,我的 Activity 在清单中没有重复,并且导出设置为 true。

最后,这是我调用 Activity 的方式:

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