我正在构建一个使用wifi的Android应用程序.
我在清单中正确声明了这些使用权限,但由于某种原因,应用程序抛出了一个SecurityException,导致应用程序强行关闭.
我将LogCat中安全异常的原因跟踪到系统,说它没有access_wifi_state权限.这对我来说很奇怪和困惑,因为我已经在清单中宣布了它.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="android.wifi"
android:versionCode="1"
android:versionName="1.0" >
<uses-permission android:name="ACCESS_WIFI_STATE" />
<uses-permission android:name="CHANGE_WIFI_STATE" />
<uses-feature android:name="android.hardware.wifi" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-sdk android:minSdkVersion="8" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name="android.wifi.AndroidWiFiActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
以下是导致异常的代码:
package android.wifi;
import android.app.Activity;
import android.content.Context;
import android.net.wifi.WifiManager;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
import android.wifi.R;
public class AndroidWiFiActivity extends Activity {
/** Called when the activity is first …Run Code Online (Sandbox Code Playgroud) 是否可以关闭/覆盖java.lang.SecurityException: Prohibited package name?
我需要扩展AffineTransform一些在缺乏功能的情况下实现的类,我需要访问m00, m01, ...被定义为包受保护的成员.
我有一个连接到 Web 服务的 webstart 应用程序。清单有:
Permissions: all-permissions
Run Code Online (Sandbox Code Playgroud)
jnlp 有:
<security>
<all-permissions/>
</security>
Run Code Online (Sandbox Code Playgroud)
但是,当创建到 Web 服务的连接时,我得到了一个java.lang.SecurityException: setContextClassLoader(完整的堆栈跟踪如下)。当我直接运行应用程序(没有 webstart)时,它工作正常。有什么我应该检查或更改我的设置来解决问题的吗?
注意:我使用的是 Java 8。该应用程序在构建 121 时运行良好,但在构建 123、124 或 125(最新的)时失败。所以要么我的设置很好并且在 b121 和 b123 之间引入了一个错误,要么在 b123 中修复了一个错误,这暴露了我的设置中的问题。
org.glassfish.hk2.api.MultiException: A MultiException has 2 exceptions. They are:
1. java.lang.SecurityException: setContextClassLoader
2. java.lang.IllegalStateException: Unable to perform operation: create on org.jvnet.hk2.internal.DynamicConfigurationServiceImpl
at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:362) ~[na:na]
at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:454) ~[na:na]
at org.jvnet.hk2.internal.SingletonContext.findOrCreate(SingletonContext.java:119) ~[na:na]
at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2296) ~[na:na]
at org.jvnet.hk2.internal.ServiceLocatorImpl.getService(ServiceLocatorImpl.java:590) ~[na:na]
at org.jvnet.hk2.internal.ServiceLocatorImpl.getService(ServiceLocatorImpl.java:577) ~[na:na]
at org.glassfish.hk2.utilities.ServiceLocatorUtilities.enablePerThreadScope(ServiceLocatorUtilities.java:89) ~[na:na]
at org.glassfish.jersey.internal.inject.Injections._createLocator(Injections.java:144) ~[na:na]
at org.glassfish.jersey.internal.inject.Injections.createLocator(Injections.java:137) …Run Code Online (Sandbox Code Playgroud) 我有一个在tomcat 5.5上运行的java applet.签名(-selfcert).java.security.AccessControlException: access denied (java.lang.RuntimePermission createClassLoader)当我的Applet尝试连接到webservice(已在此行中)时,我仍然遇到异常:
ws_locator = new My_WebserviceLocator(ws_adress + "?wsdl",
new javax.xml.namespace.QName("http://impl.webservice", "My_Webservice"));
Run Code Online (Sandbox Code Playgroud)
由于这里有一些类似的问题,我读了它们:
是的,小程序已签名.我用-verify检查了它.
可能是Tomcat安全异常,但我已经添加到catalina.policy:
grant codeBase "file:/home/me/apache-tomcat-5.5.27/webapps/myapplet/-" {
permission java.security.AllPermission; };
Run Code Online (Sandbox Code Playgroud)
grant codeBase "file:/home/me/apache-tomcat-5.5.27/webapps/myapplet/applet.jar" { permission java.security.AllPermission; };
通常的东西也在那里:
grant codeBase "file:${java.home}/jre/lib/ext/-" {
permission java.security.AllPermission;
};
Run Code Online (Sandbox Code Playgroud)
没有结果.
好的,快速更新,添加:
grant{
permission java.security.AllPermission;
};
Run Code Online (Sandbox Code Playgroud)
到本地java.policy文件修复了这个问题.但这不是我想要的,applet应该在avarage机器上运行,使用dafault java.policy文件.所以它必须从代码中修复.
我试图使用forceStopPackage()杀死另一个应用程序.但我的应用程序显示运行时错
错误:
java.lang.SecurityException: Permission Denial: forceStopPackage() from pid=10377, uid=10200 requires android.permission.FORCE_STOP_PACKAGES
Run Code Online (Sandbox Code Playgroud)
在我的清单文件中,我添加了以下权限.
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
<permission
android:name="android.permission.FORCE_STOP_PACKAGES"
android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
android:protectionLevel="signature"
android:sharedUserId="android.uid.system" />
Run Code Online (Sandbox Code Playgroud)
代码:
ActivityManager am = (ActivityManager)
context.getSystemService(Context.ACTIVITY_SERVICE);
Method forceStopPackage = am.getClass().
getDeclaredMethod("forceStopPackage", String.class);
forceStopPackage.setAccessible(true);
forceStopPackage.invoke(am, packageName);
Run Code Online (Sandbox Code Playgroud)
如何解决问题.
尝试startActivityForResult(intent, requestCode);使用final Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);intent 时,我得到java.lang.SecurityException .有趣的是这次崩溃只发生在华为的Android 5.1 - 5.1.1上我没有华为设备.你能告诉我它的建议吗?
堆栈跟踪
Fatal Exception: java.lang.SecurityException: Permission Denial: starting Intent { act=android.settings.USAGE_ACCESS_SETTINGS cmp=com.android.settings/.Settings$UsageAccessSettingsActivity } from ProcessRecord{11b5f1a1 19764:com.myproject.my/u0a167} (pid=19764, uid=10167) not exported from uid 1000
at android.os.Parcel.readException(Parcel.java:1546)
at android.os.Parcel.readException(Parcel.java:1499)
at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:2448)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1496)
at android.app.Activity.startActivityForResult(Activity.java:3794)
at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:48)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:77)
at android.app.Activity.startActivityForResult(Activity.java:3755)
at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:859)
at com.myproject.my.utils.PermissionsHelper$2.onClick(PermissionsHelper.java:134)
at android.support.v7.app.AlertController$ButtonHandler.handleMessage(AlertController.java:157)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5298)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:911)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:706)
Run Code Online (Sandbox Code Playgroud) 这是代码:
private static void CreateCounter()
{
if (PerformanceCounterCategory.Exists("DemoCategory"))
PerformanceCounterCategory.Delete("DemoCategory");
CounterCreationDataCollection ccdArray = new CounterCreationDataCollection();
CounterCreationData ccd = new CounterCreationData();
ccd.CounterName = "RequestsPerSecond";
ccd.CounterType = PerformanceCounterType.NumberOfItems32;
ccd.CounterHelp = "Requests per second";
ccdArray.Add(ccd);
PerformanceCounterCategory.Create("DemoCategory", "Demo category",
PerformanceCounterCategoryType.SingleInstance, ccdArray);
Console.WriteLine("Press any key, to start use the counter");
}
Run Code Online (Sandbox Code Playgroud)
明显:
PerformanceCounterCategory.Create("DemoCategory", "Demo category",
PerformanceCounterCategoryType.SingleInstance, ccdArray);
Run Code Online (Sandbox Code Playgroud)
是抛出异常的行.
我读过PerformanceCounterPermission,我该怎么办?
我现在正在开发一个android应用程序。当我要启动服务时,我遇到问题:不允许绑定到服务意图。该服务是Yotaphone背屏服务。
我正在搜索问题,信息很少,大多数都不是同类问题。我不知道哪一部分出了问题。
我按照指示进行操作:http : //mwiki.yotaphone.com/wiki/Building_First_App。
MainActivity中的onStart()函数:
@Override
protected void onStart() {
super.onStart();
Intent bsIntent = new Intent(this, MyBSActivity.class);
this.startService(bsIntent);
}
Run Code Online (Sandbox Code Playgroud)
Yotaphone背屏服务:
public class MyBSActivity extends BSActivity {
@Override
protected void onBSCreate() {
super.onBSCreate();
setBSContentView(R.layout.bs_activity);
}}
Run Code Online (Sandbox Code Playgroud)
错误说明:
04-24 18:27:12.659 28763-28763/com.pli.yotaphone2 E/AndroidRuntime? FATAL EXCEPTION: main
Process: com.pli.yotaphone2, PID: 28763
java.lang.RuntimeException: Unable to start service com.pli.yotaphone2.MyBSActivity@42624840 with Intent { cmp=com.pli.yotaphone2/.MyBSActivity }: java.lang.SecurityException: Not allowed to bind to service Intent { act=yotaphone.intent.action.GET_SDK_BINDER }
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2735)
at android.app.ActivityThread.access$2100(ActivityThread.java:138)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1296)
at android.os.Handler.dispatchMessage(Handler.java:102)
at …Run Code Online (Sandbox Code Playgroud) java android securityexception android-intent android-service
java ×5
android ×4
android-wifi ×1
applet ×1
classloader ×1
permissions ×1
self-signed ×1
signed ×1