android 2.3.3和android 4.2强制权限之间的区别?

时间:2012-12-17 16:19:53

标签: android user-permissions

我只是在玩某种应用程序间通信的场景, 并试图绕过Android中应用程序主要活动的问题 不能通过自定义审判来保证(因为在这种情况下它根本无法启动)。

我尝试使用两个活动:1)未受保护的主要活动。 2)单击按钮时,主活动会发送显式Intent以启动第二个活动。 那个人执行一些敏感工作并受自定义权限保护 ( “toy.test.permission.ACTIVATE_SECOND_ACTIVITY”)。
这个想法是,如果主要活动是由用户从启动器启动或 通过使用明确意图的外国恶意应用程序,我们可以在用户按下按钮之前警告用户。

public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity);
    final Button start = (Button) findViewById(R.id.start);
    start.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Intent activateIntent = new Intent(MainActivity.this,
                    SecondActivity.class);
            startActivity(activateIntent);
            finish();
        }
    });  ....

Manifest.xml文件如下所示:

<application
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>            
    </activity>
    <activity
        android:name=".SecondActivity"
        android:label="@string/second_activity_name"
        android:theme="@style/AppTheme"
        android:permission="toy.test.permission.ACTIVATE_SECOND_ACTIVITY" >
        <intent-filter>
            <action android:name="toy.test.action.ACTIVATE_SECOND_ACTIVITY" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>            
</application>

(此外,可以通过隐式Intent从友元应用程序启动SecondActivity actionString =“toy.test.action.ACTIVATE_SECOND_ACTIVITY”使用权限 “toy.test.permission.ACTIVATE_SECOND_ACTIVITY”。)

现在android 2.3.3和android 4.2之间的区别:

在Android 4.2设备或模拟器上,可以通过单击从MainActivity启动SecondActivity 虽然应用程序没有明确要求权限,但“开始”按钮没有任何问题 “toy.test.permission.ACTIVATE_SECOND_ACTIVITY”。

但是,在Android 2.3.3仿真器上,由于SecurityException,无法启动SecondActivity:

FATAL EXCEPTION: main
java.lang.SecurityException: Permission Denial: starting Intent { cmp=toy.test/.SecondActivity } 
from ProcessRecord{406827d0 405:toy.test/10034} (pid=405, uid=10034) requires
toy.test.permission.ACTIVATE_SECOND_ACTIVITY 

我很困惑:两个Android版本之间的权限实施是否发生了变化? 是否故意Android 4.2允许这样的情况,即未经许可激活SecondActivity? (当然,那会很有用。)

非常感谢任何答案, puffin137

0 个答案:

没有答案