0

我在 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);

无论如何,通话似乎都失败了。这里是安卓新手。谁能告诉我这里的问题是什么?

谢谢!

4

2 回答 2

0

如果您当前未处理 IPC,则此功能将始终失败。

另一个应用程序不拥有/声明此权限,唯一的条件是正在执行的代码checkPermission()必须属于已被授予此权限的进程/pid。这意味着checkPermission()必须从 IPC 调用中执行。也就是说,IBinder您从其他进程收到的一个调用它。

于 2013-02-01T06:14:27.930 回答
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);            
}
于 2014-04-04T17:48:00.657 回答