Eve
- Forum-Beiträge: 25
09.06.2013, 15:04:11 via Website
09.06.2013 15:04:11 via Website
Hallo Zusammen,
ich habe bereits gegoogelt, aber nichts passendes gefunden...
Und ich glaube, dass bei mir eher ein grundsätzliches Verständnisproblem vorliegt. Ich bin ja ein aboluter Java-Neuling...
Jedenfalls bekomme ich beim Installieren meiner APP eine Exception: "access to class not allowed". Ich habe u.a. das hier in der Datei TestMain.java:
Im Manifest steht u.a.
<receiver
android:name="com.example.test.TestUpdateReceiver"
android:label="@string/app_name"
android:enabled="true"
android:exported="false">
<intent-filter>
<action
android:name="android.intent.action.PACKAGE_CHANGED" />
<action
android:name="android.intent.action.PACKAGE_ADDED" />
<action
android:name="android.intent.action.PACKAGE_INSTALL" />
<action
android:name="android.intent.action.PACKAGE_REPLACED" />
<data
android:scheme="package"
android:path="com.example.test" />
</intent-filter>
</receiver>
Nachdem ich die (das?) apk installiert habe, bekommte ich im Logcat folgenden Output:
----------------------------------------------------
D/dalvikvm(20359): newInstance failed: Lcom/example/test/TestUpdateReceiver; not accessible to Landroid/app/ActivityThread;
D/AndroidRuntime(20359): Shutting down VM
W/dalvikvm(20359): threadid=1: thread exiting with uncaught exception (group=0x40018578)
D/dalvikvm( 1302): GC_EXPLICIT freed <1K, 49% free 2746K/5379K, external 408K/517K, paused 64ms
E/liblog ( 1466): failed to call dumpstate
E/AndroidRuntime(20359): FATAL EXCEPTION: main
E/AndroidRuntime(20359): java.lang.RuntimeException: Unable to instantiate receiver com.example.test.TestUpdateReceiver: java.lang.IllegalAccessException: access to class not allowed
E/AndroidRuntime(20359): at android.app.ActivityThread.handleReceiver(ActivityThread.java:1777)
E/AndroidRuntime(20359): at android.app.ActivityThread.access$2400(ActivityThread.java:117)
E/AndroidRuntime(20359): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:985)
E/AndroidRuntime(20359): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(20359): at android.os.Looper.loop(Looper.java:130)
E/AndroidRuntime(20359): at android.app.ActivityThread.main(ActivityThread.java:3687)
E/AndroidRuntime(20359): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(20359): at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime(20359): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
E/AndroidRuntime(20359): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
E/AndroidRuntime(20359): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(20359): Caused by: java.lang.IllegalAccessException: access to class not allowed
E/AndroidRuntime(20359): at java.lang.Class.newInstanceImpl(Native Method)
E/AndroidRuntime(20359): at java.lang.Class.newInstance(Class.java:1409)
E/AndroidRuntime(20359): at android.app.ActivityThread.handleReceiver(ActivityThread.java:1768)
E/AndroidRuntime(20359): ... 10 more
E/ ( 1466): Dumpstate > /data/log/dumpstate_app_error
-------------------------------------------
den log.i von oben sehe ich gar nicht (weder den if- noch den else-log)
Brauche ich denn sowas wie ein
TestUpdateReceiver tur = new TestUpdateReceiver() in meinem main?
und dann tur.createTestTxt()
Falls ja: wo müsste ich das dann einbauen? im onCreate meiner Main-Klasse?
Danke für eure Antworten,
VG,
Eve
ich habe bereits gegoogelt, aber nichts passendes gefunden...
Und ich glaube, dass bei mir eher ein grundsätzliches Verständnisproblem vorliegt. Ich bin ja ein aboluter Java-Neuling...
Jedenfalls bekomme ich beim Installieren meiner APP eine Exception: "access to class not allowed". Ich habe u.a. das hier in der Datei TestMain.java:
1public class TestMain extends Activity implements OnClickListener
2{
3 // ... Auszug...
4 private Button buttonShow;
5
6 @Override
7 protected void onCreate(Bundle savedInstanceState)
8 {
9 super.onCreate(savedInstanceState);
10 setContentView(R.layout.layout_test_main);
11 }
12
13 // usw.
14
15} // end of TestMain
16
17
18// jetzt kommt das mit dem BroadcastReceiver
19// Quelle: hier dieses Forum:
20final class TestUpdateReceiver extends BroadcastReceiver
21{
22 private String LOG_TAG = TestUpdateReceiver.class.getSimpleName();
23 private Uri uri = new Uri.Builder().scheme("package").encodedOpaquePart("com.example.test").build();
24
25 @Override
26 public void onReceive(Context _context, Intent _intent)
27 {
28 if (uri.equals(_intent.getData()))
29 {
30 Log.i(LOG_TAG, "TestUpdateReceiver called");
31 createTestTxt( _context,"test.txt");
32 }
33 else
34 Log.i(LOG_TAG, "else-Ast von TestUpdateReceiver!!! Hallo hier!!!!");
35
36 }
37
38 // Datei test.txt anlegen
39 public File createTestTxt(Context _context, String filename)
40 {
41 String msgtxt = "hallo";
42 // den restlichen Code habe ich nicht gepostet, weil ich glaube,
43 // dass ich gar nicht bis hierher komme...
44
45 }
46
47} // end of TestUpdateReceiver
2{
3 // ... Auszug...
4 private Button buttonShow;
5
6 @Override
7 protected void onCreate(Bundle savedInstanceState)
8 {
9 super.onCreate(savedInstanceState);
10 setContentView(R.layout.layout_test_main);
11 }
12
13 // usw.
14
15} // end of TestMain
16
17
18// jetzt kommt das mit dem BroadcastReceiver
19// Quelle: hier dieses Forum:
20final class TestUpdateReceiver extends BroadcastReceiver
21{
22 private String LOG_TAG = TestUpdateReceiver.class.getSimpleName();
23 private Uri uri = new Uri.Builder().scheme("package").encodedOpaquePart("com.example.test").build();
24
25 @Override
26 public void onReceive(Context _context, Intent _intent)
27 {
28 if (uri.equals(_intent.getData()))
29 {
30 Log.i(LOG_TAG, "TestUpdateReceiver called");
31 createTestTxt( _context,"test.txt");
32 }
33 else
34 Log.i(LOG_TAG, "else-Ast von TestUpdateReceiver!!! Hallo hier!!!!");
35
36 }
37
38 // Datei test.txt anlegen
39 public File createTestTxt(Context _context, String filename)
40 {
41 String msgtxt = "hallo";
42 // den restlichen Code habe ich nicht gepostet, weil ich glaube,
43 // dass ich gar nicht bis hierher komme...
44
45 }
46
47} // end of TestUpdateReceiver
Im Manifest steht u.a.
<receiver
android:name="com.example.test.TestUpdateReceiver"
android:label="@string/app_name"
android:enabled="true"
android:exported="false">
<intent-filter>
<action
android:name="android.intent.action.PACKAGE_CHANGED" />
<action
android:name="android.intent.action.PACKAGE_ADDED" />
<action
android:name="android.intent.action.PACKAGE_INSTALL" />
<action
android:name="android.intent.action.PACKAGE_REPLACED" />
<data
android:scheme="package"
android:path="com.example.test" />
</intent-filter>
</receiver>
Nachdem ich die (das?) apk installiert habe, bekommte ich im Logcat folgenden Output:
----------------------------------------------------
D/dalvikvm(20359): newInstance failed: Lcom/example/test/TestUpdateReceiver; not accessible to Landroid/app/ActivityThread;
D/AndroidRuntime(20359): Shutting down VM
W/dalvikvm(20359): threadid=1: thread exiting with uncaught exception (group=0x40018578)
D/dalvikvm( 1302): GC_EXPLICIT freed <1K, 49% free 2746K/5379K, external 408K/517K, paused 64ms
E/liblog ( 1466): failed to call dumpstate
E/AndroidRuntime(20359): FATAL EXCEPTION: main
E/AndroidRuntime(20359): java.lang.RuntimeException: Unable to instantiate receiver com.example.test.TestUpdateReceiver: java.lang.IllegalAccessException: access to class not allowed
E/AndroidRuntime(20359): at android.app.ActivityThread.handleReceiver(ActivityThread.java:1777)
E/AndroidRuntime(20359): at android.app.ActivityThread.access$2400(ActivityThread.java:117)
E/AndroidRuntime(20359): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:985)
E/AndroidRuntime(20359): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(20359): at android.os.Looper.loop(Looper.java:130)
E/AndroidRuntime(20359): at android.app.ActivityThread.main(ActivityThread.java:3687)
E/AndroidRuntime(20359): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(20359): at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime(20359): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
E/AndroidRuntime(20359): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
E/AndroidRuntime(20359): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(20359): Caused by: java.lang.IllegalAccessException: access to class not allowed
E/AndroidRuntime(20359): at java.lang.Class.newInstanceImpl(Native Method)
E/AndroidRuntime(20359): at java.lang.Class.newInstance(Class.java:1409)
E/AndroidRuntime(20359): at android.app.ActivityThread.handleReceiver(ActivityThread.java:1768)
E/AndroidRuntime(20359): ... 10 more
E/ ( 1466): Dumpstate > /data/log/dumpstate_app_error
-------------------------------------------
den log.i von oben sehe ich gar nicht (weder den if- noch den else-log)
Brauche ich denn sowas wie ein
TestUpdateReceiver tur = new TestUpdateReceiver() in meinem main?
und dann tur.createTestTxt()
Falls ja: wo müsste ich das dann einbauen? im onCreate meiner Main-Klasse?
Danke für eure Antworten,
VG,
Eve
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.