我在RecSched应用程序/项目的清单中定义了以下权限:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.recschedapk"
android:versionCode="1"
android:versionName="1.0" >
<permission android:name="com.example.recschedapk.permission.DEADLY_ACT"
android:label="DeadlyActivity"
android:description="@string/permdesc"
android:permissionGroup="android.permission-group.COST_MONEY"
android:protectionLevel="dangerous" />
:
:
</manifest>
我已在WebApp的其他应用程序(项目)中指定了此权限:
<uses-permissiom android:name="com.example.recschedapk.permission.DEADLY_ACT" />
在WebApp.java文件中,我定义了以下函数来检查运行时的权限:
private boolean checkPermission()
{
String permission = "com.example.recschedapk.permission.DEADLY_ACT";
int res = getBaseContext().checkCallingOrSelfPermission(permission);
Log.d("PERMCHECK", "int val : "+ res);
return (res == PackageManager.PERMISSION_GRANTED);
}
对上述功能的要求:
if((this.checkPermission())
return new VideoBroadCastObject(this);
无论怎样,电话似乎都失败了。这里是android新手。谁能告诉我这里的问题是什么?
谢谢!
答案 0 :(得分:0)
如果您当前没有处理IPC,此功能将始终失败。
另一个应用程序不拥有/声明此权限,这使得执行checkPermission()
的代码必须属于已被授予此权限的进程/ pid的唯一条件。这意味着必须从IPC调用执行checkPermission()
。也就是说,您从其他进程收到的IBinder
会调用此方法。
答案 1 :(得分:0)
我不知道您的流程是什么,但您可以试试这个......
private boolean checkPermission() {
String permission = "com.example.recschedapk.permission.DEADLY_ACT";
int res = getBaseContext().checkPermission(permission, Binder.getCallingPid(), Binder.getCallingUid());
Log.d("PERMCHECK", "int val : "+ res);
return (res == PackageManager.PERMISSION_GRANTED);
}