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





putextra list (8)


Wählen Sie die richtige Konfiguration zum Starten der Anwendung.

In meinem Fall habe ich einen Fehler wie unten im Bild gefunden:

Ich hatte mich gerade verändert wie:

Möge es jemandem helfen, Danke :)

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.




Ähnlich wie Olayinka's Antwort auf die Konfigurationsdatei für ADT: Ich hatte gerade das gleiche Problem mit IntelliJs IdeaU v14.

Ich arbeite an einem Tutorial, bei dem ich die MyActivity von MyActivity in MyListActivity MyActivity MyListActivity (was eine Liste von MyActivity ). Ich habe Permissions Denial bekommen.

Nach viel Probe, Mühe und Schmerz: In .idea \ workspace.xml:

...
<configuration default="false" name="MyApp" type="AndroidRunConfigurationType" factoryName="Android Application">
    <module name="MyApp" />
    <option name="ACTIVITY_CLASS" value="com.domain.MyApp.MyActivity" />
    ...
</configuration>
...

Ich habe die MyActivity in MyListActivity , das Projekt neu geladen und es geht wieder los.

Sie sind sich nicht sicher, welche IDE Sie verwenden, aber vielleicht überschreibt oder erzwingt Ihre IDE eine bestimmte Startaktivität?




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.




In meinem Fall war dieser Fehler auf falsche Pfade zurückzuführen, die zum Angeben von Absichten in meiner XML-Voreinstellungsdatei verwendet wurden, nachdem ich das Projekt umbenannt hatte. Zum Beispiel, wo ich hatte:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <Preference
        android:key="pref_edit_recipe_key"
        android:title="Add/Edit Recipe">
        <intent
            android:action="android.intent.action.VIEW"
            android:targetPackage="com.ssimon.olddirectory"
            android:targetClass="com.ssimon.olddirectory.RecipeEditActivity"/>
    </Preference>
</PreferenceScreen> 

Ich brauchte stattdessen folgendes:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <Preference
        android:key="pref_edit_recipe_key"
        android:title="Add/Edit Recipe">
        <intent
            android:action="android.intent.action.VIEW"
            android:targetPackage="com.ssimon.newdirectory"
            android:targetClass="com.ssimon.newdirectory.RecipeEditActivity"/>
</Preference>

Durch Korrigieren der Pfadnamen wurde das Problem behoben.




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.




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.




Die Ausnahme ist klar. Sie müssen android:exported="true" exported android:exported="true" in Ihrer AndroidManifest.xml-Datei festlegen, in der Sie diese Aktivität deklarieren.

Bearbeiten

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



Überprüfen Sie Ihre Internet-Einstellungen, Firewalls und solche können es blockieren, ich weiß, als ich an der Hochschule arbeitete sie die Port-Nummer blockierten, aber ich hatte nie Probleme auf meinem Heimcomputer







android android-intent android-library