android-intent intent erklärung - Android - java.lang.SecurityException: Berechtigungsverweigerung: Startabsicht





4 Answers

Dies ist nur für Android-Studio

Ich bin also kürzlich auf dieses Problem gestoßen. Das Problem lag in der Build / Run-Konfiguration. Anscheinend hatte android studio eine Aktivität in meinem Projekt als Startaktivität gewählt und ignorierte damit meine Wahl in der Manifest-Datei.

Klicken Sie auf den Modulnamen links neben der Schaltfläche "Ausführen" und klicken Sie auf "Konfigurationen bearbeiten ...". Stellen Sie nun sicher, dass "Standardaktivität starten" ausgewählt ist.

Die lustige Sache, als ich diesen Fehler bekam, war, dass ich die App immer noch mit dem Gerät starten konnte und es mit der bevorzugten Aktivität anfing. Aber das Starten von der IDE schien unmöglich.

putextra list object

Ich habe eine Bibliothek (jar) im Build-Pfad meines Projekts. Das Projekt greift auf die MainActivity im Jar zu und verwendet dabei folgende Absicht:

final Intent it = new Intent();
it.setClassName("com.example.lib", "com.example.lib.MainActivity");
startActivity(it);

Früher hat es funktioniert, aber plötzlich bekam ich "ActivityNotFoundException: No Activity found with intent", was ich lösen konnte. Aber jetzt stecke ich mit einer 'java.lang.SecurityException: Permission Denial: Start Intent' fest.

Ich habe alle Vorschläge für ausprobiert (überprüfe auf Duplikate in der Manifestdatei; füge android hinzu: exported = "true" zu lib manifest; Eclipse> Project> Clean; Hinzufügen / Ändern von 'intent-filter'-Tags; etc.). Ich habe sogar versucht, das Manifest des Projekts neu zu schreiben, aber ich ging nirgendwo hin.

Hier ist die Logcat-Ausgabe:

11-07 06:20:52.176: E/AndroidRuntime(4626): FATAL EXCEPTION: main
11-07 06:20:52.176: E/AndroidRuntime(4626): java.lang.SecurityException: Permission     Denial: starting Intent { cmp=com.example.lib/.MainActivity } from ProcessRecord{40dd3778     4626:com.example.project/u0a10046} (pid=4626, uid=10046) not exported from uid 10047
11-07 06:20:52.176: E/AndroidRuntime(4626):     at android.os.Parcel.readException(Parcel.java:1425)
11-07 06:20:52.176: E/AndroidRuntime(4626):     at android.os.Parcel.readException(Parcel.java:1379)
11-07 06:20:52.176: E/AndroidRuntime(4626):     at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1885)
11-07 06:20:52.176: E/AndroidRuntime(4626):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1412)
11-07 06:20:52.176: E/AndroidRuntime(4626):     at android.app.Activity.startActivityForResult(Activity.java:3370)
11-07 06:20:52.176: E/AndroidRuntime(4626):     at android.app.Activity.startActivityForResult(Activity.java:3331)
11-07 06:20:52.176: E/AndroidRuntime(4626):     at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:824)
11-07 06:20:52.176: E/AndroidRuntime(4626):     at android.app.Activity.startActivity(Activity.java:3566)
11-07 06:20:52.176: E/AndroidRuntime(4626):     at android.app.Activity.startActivity(Activity.java:3534)
11-07 06:20:52.176: E/AndroidRuntime(4626):     at com.example.project.MainActivity.onOptionsItemSelected(MainActivity.java:93)
11-07 06:20:52.176: E/AndroidRuntime(4626):     at android.app.Activity.onMenuItemSelected(Activity.java:2548)
11-07 06:20:52.176: E/AndroidRuntime(4626):     at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:366)
11-07 06:20:52.176: E/AndroidRuntime(4626):     at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:980)
11-07 06:20:52.176: E/AndroidRuntime(4626):     at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
11-07 06:20:52.176: E/AndroidRuntime(4626):     at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149)
11-07 06:20:52.176: E/AndroidRuntime(4626):     at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
11-07 06:20:52.176: E/AndroidRuntime(4626):     at com.android.internal.view.menu.ActionMenuView.invokeItem(ActionMenuView.java:547)
11-07 06:20:52.176: E/AndroidRuntime(4626):     at com.android.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:115)
11-07 06:20:52.176: E/AndroidRuntime(4626):     at android.view.View.performClick(View.java:4204)
11-07 06:20:52.176: E/AndroidRuntime(4626):     at android.view.View$PerformClick.run(View.java:17355)
11-07 06:20:52.176: E/AndroidRuntime(4626):     at android.os.Handler.handleCallback(Handler.java:725)
11-07 06:20:52.176: E/AndroidRuntime(4626):     at android.os.Handler.dispatchMessage(Handler.java:92)
11-07 06:20:52.176: E/AndroidRuntime(4626):     at android.os.Looper.loop(Looper.java:137)
11-07 06:20:52.176: E/AndroidRuntime(4626):     at android.app.ActivityThread.main(ActivityThread.java:5041)
11-07 06:20:52.176: E/AndroidRuntime(4626):     at java.lang.reflect.Method.invokeNative(Native Method)
11-07 06:20:52.176: E/AndroidRuntime(4626):     at java.lang.reflect.Method.invoke(Method.java:511)
11-07 06:20:52.176: E/AndroidRuntime(4626):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
11-07 06:20:52.176: E/AndroidRuntime(4626):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
11-07 06:20:52.176: E/AndroidRuntime(4626):     at dalvik.system.NativeStart.main(Native Method)

XML-Manifest des Projekts:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.project"
android:versionCode="4"
android:versionName="4.0" >

<!-- Permissions -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<supports-screens android:anyDensity="true" />

<!-- SDK Settings -->
<uses-sdk
    android:minSdkVersion="11"
    android:targetSdkVersion="18" />

<!-- APP Start -->
<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

<!-- App Activity -->
    <activity
        android:name="com.example.project.MainActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

<!-- Library Activity -->
    <activity android:name="com.example.lib.MainActivity" android:label="LibMain">
         <intent-filter>
        <action android:name="android.intent.action.MAIN"></action>
     </intent-filter>
    </activity>

</application>
<!-- END - APP -->

</manifest>

Was übersehe ich? Irgendwelche Vorschläge?

BEARBEITEN

Ich habe die manifest.xml mit allen anderen Aktivitäten aktualisiert und irgendwie hat das das Problem gelöst. Die Absichtsaktivität wird ohne Fehler gestartet. ABER , das ist nur bei AVD. Auf dem tatsächlichen Gerät gibt es immer noch denselben Fehler. Ich habe die App vom Gerät komplett deinstalliert und neu installiert, trotzdem der selbe Fehler.




Fügen Sie android: exported = "true" in Ihrem Aktivitäts-Tag "com.example.lib.MainActivity" hinzu.

Von dem Android: exportierte Dokumentation,

android: exportiert Ob die Aktivität von Komponenten anderer Anwendungen gestartet werden kann - "true", wenn es möglich ist, und "false", wenn nicht. Bei "false" kann die Aktivität nur von Komponenten derselben Anwendung oder von Anwendungen mit derselben Benutzer-ID gestartet werden.

Von Ihrer Logcat-Ausgabe verursacht eindeutig ein Missverhältnis in uid das Problem. Also sollte das Hinzufügen des android: exported = "true" den Trick machen.




Wenn Sie versuchen, Ihre App in Android-Studio über Ihr Android-Handy codiert testen, ist es in der Regel das Problem Ihres Telefons. Deaktivieren Sie einfach alle USB-Debugging-Optionen und schalten Sie die Entwickleroptionen auf OFF. Starten Sie dann Ihr Telefon neu und schalten Sie das Debugging für Entwickler und USB ein. Sie sind bereit zu gehen!




wenn wir die bestimmte activity als machen

android:exported="true"

es wird die Startaktivität sein. Klicken Sie auf den Modulnamen links neben der button "Ausführen" und klicken Sie auf "Konfigurationen bearbeiten ...". Stellen Sie nun sicher, dass "Launch default Activity" ausgewählt ist.




Related