2011-05-10 40 views
0

我有一个受保护的布尔如下如果事情= FALSE显示广告

protected boolean isKeyInstalled(Context context) { 
      // the packagename of the 'key' app 
      String proPackage = "com.funhouse.mytimmieskey"; 

      // get the package manager 
      final PackageManager pm = context.getPackageManager(); 

      // get a list of installed packages 
      List<PackageInfo> list = pm.getInstalledPackages(PackageManager.GET_DISABLED_COMPONENTS); 

      // let's iterate through the list 
      Iterator<PackageInfo> i = list.iterator(); 
      while(i.hasNext()) { 
      PackageInfo p = i.next(); 
      // check if proPackage is in the list AND whether that package is signed 
      // with the same signature as THIS package 
      if((p.packageName.equals(proPackage)) && 
       (pm.checkSignatures(context.getPackageName(), p.packageName) == PackageManager.SIGNATURE_MATCH)) 
       return true; 
      } 
      return false; 
     } 

我试图得到它显示广告是否虚假

if(isKeyInstalled(null) != false){ 
      //AdMob Banner 
      LinearLayout parent = (LinearLayout) findViewById(R.id.adveiw); 
      AdView ad = new AdView(this, AdSize.BANNER, "a14db2c31f42ef0"); 
      parent.addView(ad); 
      AdRequest r = new AdRequest(); 
      r.setTesting(false); 
      ad.loadAd(r); 
     } 

我没有代码中的错误,但这样下去兑现我的应用程序。

这里是logcat的

05-11 00:18:37.253: INFO/ActivityManager(52): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.funhouse.mytimmies/.TimsMain bnds=[125,410][235,528] } 
05-11 00:18:37.433: INFO/ActivityManager(52): Start proc com.funhouse.mytimmies for activity com.funhouse.mytimmies/.TimsMain: pid=1225 uid=10030 gids={3003} 
05-11 00:18:37.814: DEBUG/ddm-heap(1225): Got feature list request 
05-11 00:18:38.944: DEBUG/AndroidRuntime(1225): Shutting down VM 
05-11 00:18:38.964: WARN/dalvikvm(1225): threadid=3: thread exiting with uncaught exception (group=0x4001b188) 
05-11 00:18:38.974: ERROR/AndroidRuntime(1225): Uncaught handler: thread main exiting due to uncaught exception 
05-11 00:18:39.044: ERROR/AndroidRuntime(1225): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.funhouse.mytimmies/com.funhouse.mytimmies.TimsMain}: java.lang.NullPointerException 
05-11 00:18:39.044: ERROR/AndroidRuntime(1225):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496) 
05-11 00:18:39.044: ERROR/AndroidRuntime(1225):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512) 
05-11 00:18:39.044: ERROR/AndroidRuntime(1225):  at android.app.ActivityThread.access$2200(ActivityThread.java:119) 
05-11 00:18:39.044: ERROR/AndroidRuntime(1225):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863) 
05-11 00:18:39.044: ERROR/AndroidRuntime(1225):  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-11 00:18:39.044: ERROR/AndroidRuntime(1225):  at android.os.Looper.loop(Looper.java:123) 
05-11 00:18:39.044: ERROR/AndroidRuntime(1225):  at android.app.ActivityThread.main(ActivityThread.java:4363) 
05-11 00:18:39.044: ERROR/AndroidRuntime(1225):  at java.lang.reflect.Method.invokeNative(Native Method) 
05-11 00:18:39.044: ERROR/AndroidRuntime(1225):  at java.lang.reflect.Method.invoke(Method.java:521) 
05-11 00:18:39.044: ERROR/AndroidRuntime(1225):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
05-11 00:18:39.044: ERROR/AndroidRuntime(1225):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
05-11 00:18:39.044: ERROR/AndroidRuntime(1225):  at dalvik.system.NativeStart.main(Native Method) 
05-11 00:18:39.044: ERROR/AndroidRuntime(1225): Caused by: java.lang.NullPointerException 
05-11 00:18:39.044: ERROR/AndroidRuntime(1225):  at com.funhouse.mytimmies.TimsMain.isKeyInstalled(TimsMain.java:76) 
05-11 00:18:39.044: ERROR/AndroidRuntime(1225):  at com.funhouse.mytimmies.TimsMain.onCreate(TimsMain.java:27) 
05-11 00:18:39.044: ERROR/AndroidRuntime(1225):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
05-11 00:18:39.044: ERROR/AndroidRuntime(1225):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459) 
05-11 00:18:39.044: ERROR/AndroidRuntime(1225):  ... 11 more 
05-11 00:18:39.095: INFO/Process(52): Sending signal. PID: 1225 SIG: 3 
+0

请向我们展示堆栈跟踪。 – Haphazard 2011-05-10 23:51:24

+0

你正在向你的'isKeyInstalled'传递一个null,并且你从那个方法中得到一个NullPointerException。它甚至会告诉你哪一行正在抛出NullPointerException。尝试追踪通过代码传入的空值,并查看它发生的位置。提示:如果你试图调用一个空的变量的方法,你会得到一个NullPointerException。 – 2011-05-11 00:43:37

+0

我建议学习调试。 NPE很容易找到... – WarrenFaith 2011-05-11 00:51:04

回答

1

我猜final PackageManager pm = context.getPackageManager();是线76在您的错误正在发生,因为你是传递上下文为空......这是无法因为错误是存在的启动活动在onCreate方法中......传递this(作为您的活动)作为上下文,它将解决您的问题。

+0

+1,我一开始没有很好地阅读你的问题。 – MByD 2011-05-11 00:52:57

+0

我知道null正在被传递。我一直在尝试很多方法来使这个工作,但不断收到相同的空错误。通过传递'this'(作为你的活动)作为上下文,你的意思是什么,它会解决你的问题?像'public void onCreate(Bundle savedInstanceState,TimsMain context)''? – PsychoDogg 2011-05-11 04:34:05

+0

在if(isKeyInstalled(null)!= false)...这是你在一个空的环境中传递...它应该是(isKeyInstalled(this)!= false) – Joe 2011-05-11 10:26:10