android - 尝试启动库项目 Activity

标签 android android-library

我有一个库项目和主项目,我尝试从主项目启动库项目中定义的 Activity 。

Intent intent = new Intent("isr.LAUNCH");
intent.setComponent(new ComponentName("com.ISR", "com.ISR.activity.CameraActivity"));
startActivity(intent);

但我收到以下异常:

05-14 17:13:42.853: E/AndroidRuntime(29217): java.lang.SecurityException: Permission Denial: starting Intent { act=isr.LAUNCH cmp=com.ISR/.activity.CameraActivity } from ProcessRecord{40aa7178 29217:com.ssbs.sw.SWE/10094} (pid=29217, uid=10094) requires null
05-14 17:13:42.853: E/AndroidRuntime(29217):    at android.os.Parcel.readException(Parcel.java:1322)
05-14 17:13:42.853: E/AndroidRuntime(29217):    at android.os.Parcel.readException(Parcel.java:1276)
05-14 17:13:42.853: E/AndroidRuntime(29217):    at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1351)
05-14 17:13:42.853: E/AndroidRuntime(29217):    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1374)
05-14 17:13:42.853: E/AndroidRuntime(29217):    at android.app.Activity.startActivityForResult(Activity.java:2827)
05-14 17:13:42.853: E/AndroidRuntime(29217):    at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:817)
05-14 17:13:42.853: E/AndroidRuntime(29217):    at android.app.Activity.startActivity(Activity.java:2933)
05-14 17:13:42.853: E/AndroidRuntime(29217):    at com.ssbs.sw.IR.view.MainActivity$1$1.onMenuItemClick(MainActivity.java:58)
05-14 17:13:42.853: E/AndroidRuntime(29217):    at com.ssbs.sw.SWE.actionbarV5.menu.MenuButtonHelper$1.onClick(MenuButtonHelper.java:108)
05-14 17:13:42.853: E/AndroidRuntime(29217):    at android.view.View.performClick(View.java:2492)
05-14 17:13:42.853: E/AndroidRuntime(29217):    at android.view.View$PerformClick.run(View.java:9087)
05-14 17:13:42.853: E/AndroidRuntime(29217):    at android.os.Handler.handleCallback(Handler.java:587)
05-14 17:13:42.853: E/AndroidRuntime(29217):    at android.os.Handler.dispatchMessage(Handler.java:92)
05-14 17:13:42.853: E/AndroidRuntime(29217):    at android.os.Looper.loop(Looper.java:130)
05-14 17:13:42.853: E/AndroidRuntime(29217):    at android.app.ActivityThread.main(ActivityThread.java:3740)
05-14 17:13:42.853: E/AndroidRuntime(29217):    at java.lang.reflect.Method.invokeNative(Native Method)
05-14 17:13:42.853: E/AndroidRuntime(29217):    at java.lang.reflect.Method.invoke(Method.java:507)
05-14 17:13:42.853: E/AndroidRuntime(29217):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:880)
05-14 17:13:42.853: E/AndroidRuntime(29217):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:638)
05-14 17:13:42.853: E/AndroidRuntime(29217):    at dalvik.system.NativeStart.main(Native Method)

这是我的图书馆项目 list :

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.CAMERA" />

    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />

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

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >

        <activity android:name=".activity.CameraActivity" android:exported="true" >
            <intent-filter>
                <action android:name="isr.LAUNCH" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>

我该如何解决这个问题?

编辑
我的主要项目 list 权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />

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

编辑 2
我已经通过应对被调用 Activity 的主要应用程序 list 定义解决了我的问题(但我想知道我是否可以在不添加此定义的情况下执行此操作):

<activity android:name="com.ISR.activity.CameraActivity">
            <intent-filter>
                <action android:name="isr.LAUNCH" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

现在我可以使用以下代码开始我的 Activity 了:

Intent intent = new Intent("isr.LAUNCH");
startActivity(intent);

最佳答案

你实际上可以在库的 list 中声明你想要的一切,然后在你的主项目中声明

manifestmerger.enabled=true

在您的项目.properties 中。它所做的实际上是合并您的 list ,您可以在您的 bin 文件夹中看到生成的 list 。

关于android - 尝试启动库项目 Activity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16545725/

相关文章:

android - Scaled ModelMatrix 与漫射照明混淆

android - 将库项目作为依赖项添加到另一个库项目

android - 尝试使用 Cardslib 库时出错 : unable to find attribute android:foregroundInsidePadding

android - 在我的案例中使用库项目中的自定义 View

android - 如何发布其他人可以轻松使用的android库?

android - Volley vs Aquery vs Android 异步 HTTP

android - 代号一 - 在应用程序图标中显示未读消息数

java - Mockito 非 stub 函数

java - jbyteArray 和 jbyte 指针的区别

java - Android 适配器卡在 0 位置